Пытаюсь комментировать комментарии.Как расположить модели? - PullRequest
0 голосов
/ 17 октября 2010

Моя :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 Ответ

1 голос
/ 17 октября 2010

Комментариев не имеет много комментариев, только много детей:

Comment.last.children Более того, нужно сказать, какой внешний ключ использовать. Взгляните на самореференсные записи - http://blog.hasmanythrough.com/2006/4/21/self-referential-through Или лучше использовать деревья, как вложенный набор.

...