rails:自引用关联

joh*_*ohn 1 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
Run Code Online (Sandbox Code Playgroud)

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

我需要做些什么改变才能使模型工作?

谢谢.

Ju *_*ira 5

我相信你应该使用多态关联.

为此,您需要在桌面上添加a commentable_id和a .你的模型看起来应该是这样的: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
Run Code Online (Sandbox Code Playgroud)

这样你就可以使用了

@tip.comments
@comment.comments
Run Code Online (Sandbox Code Playgroud)