rails:自引用关联

时间:2010-06-12 15:55:45

标签: ruby-on-rails self-reference

我的需求非常简单:我有一个提示表来接收评论并有评论来接收评论。

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

我试图通过使用自我引用关联来使用一个注释表。有些资源似乎会带来不止一张表,这与我的需求不同。所以我想出了以下建模评论:

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

显然这里缺少一些东西,但我无法弄明白。 有人可以启发我:

我需要做些什么改变才能使模型有效?

感谢。

1 个答案:

答案 0 :(得分:5)

我相信你应该使用polymorphic association

为此,您需要在commentable_id表格中添加commentable_typecomments。你的模型看起来应该是这样的:

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