我的:post
模型是父模型。在一篇文章中有很多评论。评论有可能有更多的评论,等等。我以为我有这个权利,但我打算输入:
Comment.last.comments
我明白了:
NoMethodError: undefined method `comments' for #<Comment:0x1053a1ff0>
我的模特:
#comment.rb
belongs_to :post
belongs_to :parent, :class_name => 'Comment'
has_many :children, :class_name => 'Comment'
validates_presence_of :text
#post.rb
has_many :comments
accepts_nested_attributes_for :comments, :allow_destroy => true
我的迁移
class CreateComments < ActiveRecord::Migration
def self.up
create_table :comments do |t|
t.text :text
t.integer :post_id
t.integer :comment_id
t.timestamps
end
end
def self.down
drop_table :comments
end
end
答案 0 :(得分:1)
评论没有很多评论,只有很多孩子:
Comment.last.children
而且,你需要说出使用什么外键。
看一下自我引用的记录 - http://blog.hasmanythrough.com/2006/4/21/self-referential-through
或者更好地使用嵌套集等树。