2010-06-12 69 views
1

我的需求非常简单:我有一个提示表来接收评论并且有评论也可以收到评论。导轨:自我指涉协会

要检索存储在同一个表(评论)中的每条评论,我为评论创建了另一个关键字:“inverse_comments”。

我试图通过使用自引用关联来使用一个评论表。有些资源似乎将不止一张表纳入与我的需求不同的表格中。于是我想出了whth以下建模征求意见:

class Comment < ActiveRecord::Base 
    belongs_to :tip 
    belongs_to :user 
    has_many :mycomments, 
      :through => :inverse_comments, 
      :source => :comment 
end 

显然缺少的东西在这里,但我无法弄清楚。 有人能对此有所启发:

我需要做些什么才能使模型发挥作用?

谢谢。

回答

5

我相信你应该使用polymorphic association

为此,您需要在comments表中添加commentable_idcommentable_type。和你的模型应该是这样的:

class Comment < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :commentable, :polymorphic => true  
    has_many :comments, :as => :commentable 
end 

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

这样,您就可以使用

@tip.comments 
@comment.comments