class CollectiveIdea::Acts::NestedSet::Tree
Attributes
indices[RW]
model[R]
validate_nodes[R]
Public Class Methods
new(model, validate_nodes)
click to toggle source
# File lib/awesome_nested_set/tree.rb 12 def initialize(model, validate_nodes) 13 @model = model 14 @validate_nodes = validate_nodes 15 @indices = {} 16 end
Public Instance Methods
rebuild!()
click to toggle source
# File lib/awesome_nested_set/tree.rb 18 def rebuild! 19 # Don't rebuild a valid tree. 20 return true if model.valid? 21 22 root_nodes.each do |root_node| 23 # setup index for this scope 24 indices[scope_for_rebuild.call(root_node)] ||= 0 25 set_left_and_rights(root_node) 26 reset_counter_cache(root_node) 27 end 28 end
Private Instance Methods
increment_indice!(node)
click to toggle source
# File lib/awesome_nested_set/tree.rb 32 def increment_indice!(node) 33 indices[scope_for_rebuild.call(node)] += 1 34 end
node_children(node)
click to toggle source
# File lib/awesome_nested_set/tree.rb 45 def node_children(node) 46 model.where(["#{quoted_parent_column_full_name} = ? #{scope_for_rebuild.call(node)}", node.primary_id]). 47 order(order_for_rebuild) 48 end
reset_counter_cache(node)
click to toggle source
# File lib/awesome_nested_set/tree.rb 62 def reset_counter_cache(node) 63 return unless counter_cache_column_name 64 node.class.reset_counters(node.id, :children) 65 66 node.children.each do |child| 67 reset_counter_cache(child) 68 end 69 end
root_nodes()
click to toggle source
# File lib/awesome_nested_set/tree.rb 50 def root_nodes 51 model.where("#{quoted_parent_column_full_name} IS NULL").order(order_for_rebuild) 52 end
set_left!(node)
click to toggle source
# File lib/awesome_nested_set/tree.rb 54 def set_left!(node) 55 node[left_column_name] = increment_indice!(node) 56 end
set_left_and_rights(node)
click to toggle source
# File lib/awesome_nested_set/tree.rb 36 def set_left_and_rights(node) 37 set_left!(node) 38 # find 39 node_children(node).each { |n| set_left_and_rights(n) } 40 set_right!(node) 41 42 node.save!(:validate => validate_nodes) 43 end
set_right!(node)
click to toggle source
# File lib/awesome_nested_set/tree.rb 58 def set_right!(node) 59 node[right_column_name] = increment_indice!(node) 60 end