module Mongoid::Acts::NestedSet::Document::InstanceMethods

Public Instance Methods

<=>(x) click to toggle source

order by left field

# File lib/mongoid_nested_set/document.rb, line 187
def <=>(x)
  left <=> x.left
end
==(comparison_object) click to toggle source

Redefine to act like active record

# File lib/mongoid_nested_set/document.rb, line 193
def ==(comparison_object)
  comparison_object.equal?(self) ||
    (comparison_object.instance_of?(scope_class) &&
     comparison_object.id == id &&
     !comparison_object.new_record?)
end
child?() click to toggle source

Returns true if this is a child node

# File lib/mongoid_nested_set/document.rb, line 169
def child?
  !parent_id.nil?
end
depth?() click to toggle source

Returns true if depth is supported

# File lib/mongoid_nested_set/document.rb, line 175
def depth?
  true
end
leaf?() click to toggle source

Returns true if this is a leaf node

# File lib/mongoid_nested_set/document.rb, line 162
def leaf?
  #!new_record? && right - left == 1
  right - left == 1
end
left() click to toggle source

Value of the left field

# File lib/mongoid_nested_set/document.rb, line 144
def left
  self[left_field_name]
end
nested_set_scope() click to toggle source

All nested set queries should use this nested_set_scope, which performs finds using the :scope declared in the acts_as_nested_set declaration

# File lib/mongoid_nested_set/document.rb, line 218
def nested_set_scope
  scopes = Array(acts_as_nested_set_options[:scope])
  conditions = scopes.inject({}) do |conditions,attr|
    conditions.merge attr => self[attr]
  end unless scopes.empty?
  scope_class.criteria.where(conditions).asc(left_field_name)
end
outline_numbering?() click to toggle source

Returns true if outline numbering is supported

# File lib/mongoid_nested_set/document.rb, line 181
def outline_numbering?
  !!outline_number_field_name
end
parent_id() click to toggle source

Value fo the parent field

# File lib/mongoid_nested_set/document.rb, line 138
def parent_id
  self[parent_field_name]
end
right() click to toggle source

Value of the right field

# File lib/mongoid_nested_set/document.rb, line 150
def right
  self[right_field_name]
end
root?() click to toggle source

Returns true if this is a root node

# File lib/mongoid_nested_set/document.rb, line 156
def root?
  parent_id.nil?
end
same_scope?(other) click to toggle source

Check if other model is in the same scope

# File lib/mongoid_nested_set/document.rb, line 202
def same_scope?(other)
  Array(acts_as_nested_set_options[:scope]).all? do |attr|
    self.send(attr) == other.send(attr)
  end
end
to_text() click to toggle source
# File lib/mongoid_nested_set/document.rb, line 209
def to_text
  self_and_descendants.map do |node|
    "#('*'*(node.level+1)} #{node.id} #{node.to_s} (#{node.parent_id}, #{node.left}, #{node.right})"
  end.join("\n")
end

Protected Instance Methods

reload_nested_set() click to toggle source

reload left, right, and parent

# File lib/mongoid_nested_set/document.rb, line 236
def reload_nested_set
  reload
end
without_self(scope) click to toggle source
# File lib/mongoid_nested_set/document.rb, line 230
def without_self(scope)
  scope.where(:_id.ne => self.id)
end