Rails模型协会混乱

时间:2010-11-25 22:30:28

标签: ruby-on-rails ruby activerecord associations

嘿伙计们。我有以下型号:

  • 分类
  • 事件
  • 锁定
  • 项目
  • 网站
  • 用户

Events基本上是“日志项目”。换句话说,他们会在Item中存储UserCategory Event所采取的行动。当然,当我想到这一点时,我认为它“有一个用户”,“有一个类别”,“有一个项目”,等等。但是,这意味着在任何给定User行中Event都会有一个外键,但这不是我想要的。我想要Event行中的外键,因为User只是提供有关CategoryEvent等内容的信息

所以我的理解是,我应该说一个belongs_to“属于一个用户”,“属于一个类别”等,并且他们每个人都有“许多事件”作为回报,对吗?我只是确定,因为这不像其他大多数协会那样在逻辑上阅读。我不需要/希望能够从另一方(即user.event)访问事件,因为它没有多大意义。所以如果我这样做,我会在另一边添加has_one来电,而不是event.user event.action event.item event.category 吗?

也许我的设计不正确。

我最终希望能够呈现一个充满行的“日志页面”,到达行描述的内容如下:

{{1}}

2 个答案:

答案 0 :(得分:1)

  

我不需要/希望能够访问   来自另一方的事件(即   user.event)因为它不会   很有道理。所以,如果我这样做,我会   只需添加belongs_to调用,而不是   另一边是has_one吗?

添加它们(belongs_tohas_many)。当然,user.event没有意义,但user.events确实有意义。

答案 1 :(得分:1)

是的,在这里你要使用has_many& belongs_to association。在Activerecord的上下文中,has_many定义了belongs_to的需要。 “如果模型(a)具有另一个模型(b),则该相关模型(b)属于第一模型(a)”。

由于用户将有许多与之关联的事件,因此事件将属于用户。

另一方面,如果用户只有一个与之关联的事件,那么这些模型将具有“has_one”关联。