1

我的需求很简单:我有一个 Tip 表来接收评论,也有评论来接收评论。

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

我尝试通过使用自引用关联来使用一个评论表。有些资源似乎将不止一张桌子带入了与我的需求不同的桌子。因此,我提出了以下建模意见:

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

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

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

谢谢。

4

1 回答 1

5

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

为此,您需要在桌子上添加 acommentable_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

这样你就可以使用

@tip.comments
@comment.comments
于 2010-06-12T16:15:47.837 回答