接近属于许多可能模型之一的模型的最佳方法

时间:2010-06-09 19:13:52

标签: ruby-on-rails

假设我有一堆模型,文章,下载,视频,图片,我希望能够使用单一评论模型对所有这些模型发表评论,以便我可以跟踪特定用户对所有这些模型所做的评论。什么是最好的方法呢?

2 个答案:

答案 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_idcommentable_type列,而不是他们在示例中使用的imageable_ *列。

答案 1 :(得分:0)

在环顾四周之后,我发现this screencast也非常有用,如果有其他人也在寻找。