※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

プラグイン名

acts_as_ordered_treeプラグイン

このプラグインができること

  1. 順序を保ったまま1テーブル内でツリー構造上のデータを表現できる
  2. acts_as_treeに順序制御が入ったもの
  3. acts_as_listとacts_as_treeが合体した感じ
  4. 純粋なリストじゃなければ、これだけでいいかも

ちょー簡単な使い方

./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 |
                                +----+-----------+----------+---------+
どういうメソッドがあるかは本家を見ること。

公式ページ


日本語解説ページ

  • 見つからない

外国語解説ページ

  • あるかもしれないけど、本家でよくね?

のうはう

  • マイグレーションファイルの構造

コメント

名前:
添付ファイル