Adds a "depth" option to the child_pages macro (#10789).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10401 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2012-09-16 15:24:35 +00:00
parent ca4f2c59b6
commit 747e4ecd3a
5 changed files with 53 additions and 9 deletions
@@ -73,15 +73,20 @@ module ActiveRecord
# Returns list of descendants.
#
# root.descendants # => [child1, subchild1, subchild2]
def descendants
children + children.collect(&:descendants).flatten
def descendants(depth=nil)
depth ||= 0
result = children.dup
unless depth == 1
result += children.collect {|child| child.descendants(depth-1)}.flatten
end
result
end
# Returns list of descendants and a reference to the current node.
#
# root.self_and_descendants # => [root, child1, subchild1, subchild2]
def self_and_descendants
[self] + descendants
def self_and_descendants(depth=nil)
[self] + descendants(depth)
end
# Returns the root node of the tree.