Module: CollectiveIdea::Acts::NestedSet::Model

Extended by:
ActiveSupport::Concern
Defined in:
lib/plugins/awesome_nested_set/lib/awesome_nested_set/model.rb,
lib/plugins/awesome_nested_set/lib/awesome_nested_set/model/movable.rb,
lib/plugins/awesome_nested_set/lib/awesome_nested_set/model/prunable.rb,
lib/plugins/awesome_nested_set/lib/awesome_nested_set/model/relatable.rb,
lib/plugins/awesome_nested_set/lib/awesome_nested_set/model/rebuildable.rb,
lib/plugins/awesome_nested_set/lib/awesome_nested_set/model/validatable.rb,
lib/plugins/awesome_nested_set/lib/awesome_nested_set/model/transactable.rb

Defined Under Namespace

Modules: ClassMethods, Movable, Prunable, Rebuildable, Relatable, Transactable, Validatable

Instance Method Summary (collapse)

Instance Method Details

- (Boolean) child?

Returns true is this is a child node

Returns:

  • (Boolean)


118
119
120
# File 'lib/plugins/awesome_nested_set/lib/awesome_nested_set/model.rb', line 118

def child?
  !root?
end

- (Boolean) leaf?

Returns true if this is the end of a branch.

Returns:

  • (Boolean)


123
124
125
# File 'lib/plugins/awesome_nested_set/lib/awesome_nested_set/model.rb', line 123

def leaf?
  persisted? && right.to_i - left.to_i == 1
end

- (Object) left(target = self)

Value of the left column



103
104
105
# File 'lib/plugins/awesome_nested_set/lib/awesome_nested_set/model.rb', line 103

def left(target = self)
  target[left_column_name]
end

- (Object) nested_set_scope(options = {})

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



130
131
132
133
134
135
136
137
138
# File 'lib/plugins/awesome_nested_set/lib/awesome_nested_set/model.rb', line 130

def nested_set_scope(options = {})
  if (scopes = Array(acts_as_nested_set_options[:scope])).any?
    options[:conditions] = scopes.inject({}) do |conditions,attr|
      conditions.merge attr => self[attr]
    end
  end

  self.class.nested_set_scope options
end

- (Object) parent_id(target = self)

Any instance method that returns a collection makes use of Rails 2.1's named_scope (which is bundled for Rails 2.0), so it can be treated as a finder.

category.self_and_descendants.count
category.ancestors.find(:all, :conditions => "name like '%foo%'")

Value of the parent column



98
99
100
# File 'lib/plugins/awesome_nested_set/lib/awesome_nested_set/model.rb', line 98

def parent_id(target = self)
  target[parent_column_name]
end

- (Object) right(target = self)

Value of the right column



108
109
110
# File 'lib/plugins/awesome_nested_set/lib/awesome_nested_set/model.rb', line 108

def right(target = self)
  target[right_column_name]
end

- (Boolean) root?

Returns true if this is a root node.

Returns:

  • (Boolean)


113
114
115
# File 'lib/plugins/awesome_nested_set/lib/awesome_nested_set/model.rb', line 113

def root?
  parent_id.nil?
end

- (Object) to_text



140
141
142
143
144
# File 'lib/plugins/awesome_nested_set/lib/awesome_nested_set/model.rb', line 140

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