评论belongs_to几个模型之一

时间:2011-12-01 05:36:14

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord polymorphic-associations

我的情况是有几种不同的模型可以有评论。试图找出关系:

Post
  has_many :comments

Update
  has_many :comments

Comment
  belongs_to EITHER :post OR :update (but not both)????

建立评论关系的正确方法是什么?我希望能够拨打Post.commentsUpdate.comments

1 个答案:

答案 0 :(得分:5)

闻起来像polymorphic association

  

对于多态关联,模型可以属于单个关联上的多个其他模型。例如,您可能拥有属于员工模型或产品模型的图片模型。

所以你想要这样的东西:

class Comment < ActiveRecord::Base
  belongs_to :commentable, :polymorphic => true
end

class Post < ActiveRecord::Base
  has_many :comments, :as => :commentable
end

class Update < ActiveRecord::Base
  has_many :comments, :as => :commentable
end

您必须在数据库中设置一些内容才能使其正常工作。有关您需要的列的详细信息,请参阅Polymorphic AssociationsActive Record Associations Guide部分。