2010-10-17 42 views
0

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

評論沒有很多評論,只是很多孩子:

Comment.last.children 此外,你需要說些什麼外鍵使用。 看一看自引用記錄 - http://blog.hasmanythrough.com/2006/4/21/self-referential-through 或者更好地使用像嵌套集合的樹。

+0

對於嵌套設置+1 - 請參閱:http://github.com/collectiveidea/awesome_nested_set – zetetic 2010-10-17 21:45:14

+0

謝謝你們。 @zetetic,因爲它的冗長,我被插件嚇倒了。但我發現瑞恩貝茨再次與這一個打擊:http://railscasts.com/episodes/163-self-referential-association。看起來像是對C0r0ner建議的引用。謝謝 – Trip 2010-10-18 11:18:33

+0

那就對了。意識到選擇無限深度的評論的所有孩子將是真正的痛苦。所以如果你確實需要無限制的評論嵌套使用嵌套設置冗長冗長 – Sigurd 2010-10-20 11:46:29