我想创建一个系统供用户评论评论也可以有回复的帖子。由于我不能做自我参照的HABTM关系,我做了一些研究,看到我应该以这种方式去做:
Post
has_many :comments
end
Comment
belongs_to :user
belongs_to :post
has_many :replies, :class_name => 'Comment'
end
我知道这不是100%正确(这就是我要问的原因)。如果有人可以告诉我如何建立这种关系以及我将如何创建迁移,我会很感激!!谢谢!
答案 0 :(得分:3)
最简单的解决方案是使用acts_as_tree插件。很容易看出它是如何实现的,但基本上你需要在模型上添加自引用belongs_to
和parent_id
列。 (带有nil parent_id的评论是顶级评论;不是回复。)
答案 1 :(得分:1)
假设还可以回复回复,那么您将收到一条评论树。因此,我建议您使用acts_as_tree
:
Comment < ActiveRecord::Base
belongs_to :user
belongs_to :post
acts_as_tree :order => 'created_at'
end