Module WizardActsAsOrderedTree::Acts::OrderedTree::AddActsAsMethod
In: lib/acts_as_ordered_tree.rb

Methods

Public Instance methods

Configuration:

  class Person < ActiveRecord::Base
    acts_as_ordered_tree :foreign_key   => :parent_id,
                         :order         => :position
  end

  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
      end
      add_index(:people, :parent_id)
    end
  end

[Source]

    # File lib/acts_as_ordered_tree.rb, line 47
47:         def acts_as_ordered_tree(options = {})
48:           configuration = { :foreign_key   => :parent_id ,
49:                             :order         => :position  }
50:           configuration.update(options) if options.is_a?(Hash)
51: 
52:           belongs_to :parent_node,
53:                      :class_name    => name,
54:                      :foreign_key   => configuration[:foreign_key]
55: 
56:           has_many   :child_nodes,
57:                      :class_name    => name,
58:                      :foreign_key   => configuration[:foreign_key],
59:                      :order         => configuration[:order]
60: 
61:           cattr_reader :roots
62: 
63:           class_eval "include WizardActsAsOrderedTree::Acts::OrderedTree::InstanceMethods\n\ndef foreign_key_column\n:'\#{configuration[:foreign_key]}'\nend\n\ndef order_column\n:'\#{configuration[:order]}'\nend\n\ndef self.roots(reload = false)\nreload = true if !@@roots\nreload ? find(:all, :conditions => \"\#{configuration[:foreign_key]} = 0\", :order => \"\#{configuration[:order]}\") : @@roots\nend\n\nbefore_create  :add_to_list\nbefore_update  :check_list_changes\nafter_update   :reorder_old_list\nbefore_destroy :destroy_descendants\nafter_destroy  :reorder_old_list\n"
64:         end

[Validate]