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, line 12 def initialize(model, validate_nodes) @model = model @validate_nodes = validate_nodes @indices = {} end
Public Instance Methods
rebuild!()
click to toggle source
# File lib/awesome_nested_set/tree.rb, line 18 def rebuild! # Don't rebuild a valid tree. return true if model.valid? root_nodes.each do |root_node| # setup index for this scope indices[scope_for_rebuild.call(root_node)] ||= 0 set_left_and_rights(root_node) end end
Private Instance Methods
increment_indice!(node)
click to toggle source
# File lib/awesome_nested_set/tree.rb, line 31 def increment_indice!(node) indices[scope_for_rebuild.call(node)] += 1 end
node_children(node)
click to toggle source
# File lib/awesome_nested_set/tree.rb, line 44 def node_children(node) model.where(["#{quoted_parent_column_full_name} = ? #{scope_for_rebuild.call(node)}", node.primary_id]). order(order_for_rebuild) end
root_nodes()
click to toggle source
# File lib/awesome_nested_set/tree.rb, line 49 def root_nodes model.where("#{quoted_parent_column_full_name} IS NULL").order(order_for_rebuild) end
set_left!(node)
click to toggle source
# File lib/awesome_nested_set/tree.rb, line 53 def set_left!(node) node[left_column_name] = increment_indice!(node) end
set_left_and_rights(node)
click to toggle source
# File lib/awesome_nested_set/tree.rb, line 35 def set_left_and_rights(node) set_left!(node) # find node_children(node).each { |n| set_left_and_rights(n) } set_right!(node) node.save!(:validate => validate_nodes) end
set_right!(node)
click to toggle source
# File lib/awesome_nested_set/tree.rb, line 57 def set_right!(node) node[right_column_name] = increment_indice!(node) end