| Module | WizardActsAsOrderedTree::Acts::OrderedTree::AddActsAsMethod |
| In: |
lib/acts_as_ordered_tree.rb
|
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
# 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