Rails属于许多模型

时间:2010-10-12 05:22:56

标签: ruby-on-rails activerecord belongs-to

我确实发现了一些关于Rails关联的问题,这些关联有点像我的问题,但对于我的生活,我似乎无法理解如何使用belongs_to多个模型。

这是我打算拥有的表结构

User
 id

Post
 id
 user_id #foreign key; a post belongs to a User aka "Who created this post"

Comment
 id
 user_id #foreign key; a comment belongs to a User aka "Who made this comment"
 post_id #foreign key; a comment belongs to a Post aka "What post this comment is for"

协会

User
 has_many :posts
 has_many :comments

Post
 belongs_to :user
 has_many :comments

Comment
 belongs_to :user
 belongs_to :post

这是正确的方法吗?

2 个答案:

答案 0 :(得分:52)

是的,这是正确的方法。

答案 1 :(得分:10)

虽然并非总是“最佳”方法,但Rails提供了所谓的Polymorphic belongs_to association。它阻止您在数据库中定义外键,因为xxx_id列在许多可能的表之一中引用了id,而另一列指定了该表模型的名称,但它使得Rails中的关系更加明确。此外,它将模型限制为仅属于其他模型之一,而不是属于一个或多个,因为使用多个外键的设置而没有一些额外的db魔法会发生。