2010-09-24 95 views
2

我想创建一个系统供用户评论帖子,评论也可以有回复。因为我不能做一个自我指涉的HABTM关系,我做了一些调查,发现我应该以这种方式去了解它:自引用关联(Ruby on Rails)

Post 
    has_many :comments 
end 

Comment 
    belongs_to :user 
    belongs_to :post 
    has_many :replies, :class_name => 'Comment' 
end 

我知道这是不是100%正确的(这就是为什么我问)。如果任何人可以建议我如何建立这种关系,以及如何创建迁移,我会很感激!谢谢!

回答

3

最简单的解决方案就是使用acts_as_tree插件。很容易看到它的实现方式,但基本上你需要在模型上添加一个自引用的belongs_to以及一个parent_id列。 (一个没有parent_id的评论是一个顶级评论;不是回复。)

1

假设也可以回复答复,那么你会得到一棵评论树。所以我建议你用acts_as_tree

Comment < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :post 
    acts_as_tree :order => 'created_at' 
end