我的需求非常简单:我有一个提示表来接收评论并有评论来接收评论。
要检索存储在同一个表中的每个注释(注释),我为注释的注释创建了另一个键:“inverse_comments”。
我试图通过使用自我引用关联来使用一个注释表。有些资源似乎会带来不止一张表,这与我的需求不同。所以我想出了以下建模评论:
class Comment < ActiveRecord::Base
belongs_to :tip
belongs_to :user
has_many :mycomments,
:through => :inverse_comments,
:source => :comment
end
显然这里缺少一些东西,但我无法弄明白。 有人可以启发我:
我需要做些什么改变才能使模型有效?
感谢。
答案 0 :(得分:5)
我相信你应该使用polymorphic association。
为此,您需要在commentable_id
表格中添加commentable_type
和comments
。你的模型看起来应该是这样的:
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