Module: MMTree

Defined in:
lib/mm_tree.rb

Defined Under Namespace

Modules: InstanceMethods

Class Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/mm_tree.rb', line 41

def self.included klass
  klass.class_eval do
    belongs_to :parent, 
               :polymorphic => true, 
               :foreign_key => :parent_id
    
    many :children, 
        :as => :parent, 
        :foreign_key => :parent_id
             
    key :parent_id, ObjectId
    key :parent_type, String
    key :depth, Integer, :default => 0
    
    
    after_create :set_depth
    
    class_eval <<-EOV
      def self.roots
        find(:all, :conditions => {:parent_id=>nil}, :order => "depth")
      end

      def self.root
        find(:first,:conditions => {:parent_id=>nil},:order => "depth")
      end
    EOV
    
    include InstanceMethods
  end
end