プラグイン名
acts_as_ordered_treeプラグイン
このプラグインができること
- 順序を保ったまま1テーブル内でツリー構造上のデータを表現できる
- acts_as_treeに順序制御が入ったもの
- acts_as_listとacts_as_treeが合体した感じ
- 純粋なリストじゃなければ、これだけでいいかも
ちょー簡単な使い方
./script/plugin install svn://rubyforge.org/var/svn/ordered-tree/acts_as_ordered_tree
でインストールして、
class CreatePeople < ActiveRecord::Migration
def self.up
create_table :people do |t|
t.column :parent_id ,:integer ,:null => false ,:default => 0
t.column :position ,:integer
t.column :name ,:string
end
add_index(:people, :parent_id)
end
end
みたいにマイグレーションしてからモデルに、
class Person < ActiveRecord::Base
acts_as_ordered_tree :foreign_key => :parent_id,
:order => :position
belongs_to :parent,
:class_name => Person,
:foreign_key => :parent_id
has_many :children,
:class_name => Person,
:foreign_key => :parent_id,
:order => :position
end
としておくと、こんなことができる。
v.1.2
+----+-----------+----------+---------+
node_1 | id | parent_id | position | name |
\_ node_2 +----+-----------+----------+---------+
\_ node_3 | 1 | 0 | 1 | Node_1 |
| \_ node_4 | 2 | 1 | 1 | Node_2 |
| \_ node_5 | 3 | 1 | 2 | Node_3 |
| | \_ node_8 | 4 | 3 | 1 | Node_4 |
| | \_ node_9 | 5 | 3 | 2 | Node_5 |
| \_ node_10 | 6 | 1 | 3 | Node_6 |
| \_ node_11 | 7 | 1 | 4 | Node_7 |
\_ node_6 | 8 | 5 | 1 | Node_8 |
\_ node_7 | 9 | 5 | 2 | Node_9 |
| | 10 | 3 | 3 | Node_10 |
| | 11 | 3 | 4 | Node_11 |
node_12 | 12 | 0 | 2 | Node_12 |
\_ node_13 | 13 | 12 | 1 | Node_13 |
\_ node_14 | 14 | 12 | 2 | Node_14 |
| \_ node_15 | 15 | 14 | 1 | Node_15 |
| \_ node_16 | 16 | 14 | 2 | Node_16 |
| | \_ node_19 | 17 | 12 | 3 | Node_17 |
| | \_ node_20 | 18 | 12 | 4 | Node_18 |
| \_ node_21 | 19 | 16 | 1 | Node_19 |
| \_ node_22 | 20 | 16 | 2 | Node_20 |
\_ node_17 | 21 | 14 | 3 | Node_21 |
\_ node_18 | 22 | 14 | 4 | Node_22 |
+----+-----------+----------+---------+
公式ページ
日本語解説ページ
外国語解説ページ
のうはう
コメント
最終更新:2008年08月21日 14:56