2012-01-05 13 views
1

ネストされたコメントを設定したいので、これを設定するために自己結合を使いたいと思っています。レールにhas_many自己結合のテーブル名を定義していますか?

class Comment < ActiveRecord::Base 

has_many :children, :class_name => 'Comment' 

#... 
end 

ここで、has_many自己結合を設定するために使用するSQLテーブル構造は何ですか?私はこのテーブルを使用するためにレールを伝えるにはどうすればよい

comment_to_comments: 
parent_id integer 
child_id integer 

私はこのようなものを想定していますか? parent_idが親に到達するための外部キーで、child_idが子に到達するための外部キーであることを、どのようにしてレールに伝えますか?

答えて

1
create_table :comments do |t| 
    t.integer :parent_id 
end 

class Comment < ActiveRecord::Base 
    has_many :children, :class_name => "Comment", :foreign_key => :parent_id 
    belongs_to :parent, :class_name => "Comment" 

end 

この機能を実装するには、プラグインを使用することをお勧めします。awesome_nested_setまたはacts_as_tree

関連する問題