繁体   English   中英

Rails模型协会混乱

[英]Rails Model Association Confusion

大家好。 我有以下型号:

  • 类别
  • 事件
  • 项目
  • 现场
  • 用户

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

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

也许我的设计不正确。

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

event.user event.action event.item event.category

我不需要/希望能够从另一方(即user.event)访问事件,因为它没有多大意义。 所以如果我这样做,我会在另一边添加belongs_to调用而不是has_one吗?

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM