试图发表评论意见。如何安排模特?

时间:2010-10-17 19:24:38

标签: ruby-on-rails model ruby-on-rails-3 nested models

我的: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

1 个答案:

答案 0 :(得分:1)

评论没有很多评论,只有很多孩子:

Comment.last.children 而且,你需要说出使用什么外键。 看一下自我引用的记录 - http://blog.hasmanythrough.com/2006/4/21/self-referential-through 或者更好地使用嵌套集等树。