假设我有一堆模型,文章,下载,视频,图片,我希望能够使用单一评论模型对所有这些模型发表评论,以便我可以跟踪特定用户对所有这些模型所做的评论。什么是最好的方法呢?
答案 0 :(得分:2)
这正是多态关联的设计目的。
检查http://guides.rails.info/association_basics.html#polymorphic-associations
基本上你会做这样的事情:
Class User < ActiveRecord::Base
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
belongs_to :user
end
class Video < ActiveRecord::Base
has_many :comments, :as => :commentable
end
class Article < ActiveRecord::Base
has_many :comments, :as => :commentable
end
# ... so on
检查上面的链接,了解如何设计迁移。您需要commentable_id
和commentable_type
列,而不是他们在示例中使用的imageable_ *列。
答案 1 :(得分:0)
在环顾四周之后,我发现this screencast也非常有用,如果有其他人也在寻找。