rails gem: acts_as_nested_set でツリー構造を表現 使い方
acts_as_nested_setってなにをするものかというと、親の下に子、子の下に孫といった階層づけされたデータを簡単にあつかえるようにしてくれるもので、長所としてはそういった階層下されている情報をSQL一発で全て取りだせる事にあるそうだ。
create_table :sections do |t| t.column :parent_id, :integer t.column :lft, :integer t.column :rgt, :integer t.column :name, :string end
class Section < ActiveRecord::Base acts_as_nested_set :options=>{:order=>"id"} end
parent_idとlft、rgtはacts_as_nested_setがちゃんと動作するのに必要なフィールド。
インスタンスメソッド一覧
- root?
自分がツリーのトップかどうか
- child?
自分がどこかにぶら下がっているかどうか?
- unknown?
自分が迷子かどうか?(親も子もない場合)
- add_child(child)
自分に子をぶら下げる
- children_count
自分にぶら下がっている子の総数を返す
- full_set
自分とぶら下がっている子全てを配列で返す
- all_children
自分にぶら下がっている子全てを配列で返す
- direct_children
自分の直接ぶら下がっている子を配列で返す
add_childする時にはaddされる側とする側両方のレコードが実際にテーブル上にないと駄目らしい
ソース: