mirror of
https://github.com/github/rails.git
synced 2026-01-25 06:18:04 -05:00
Added roots, root, and siblings to the batch of methods added by acts_as_tree #1541 [michael@schuerig.de]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1585 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
*SVN*
|
||||
|
||||
* Added roots, root, and siblings to the batch of methods added by acts_as_tree #1541 [michael@schuerig.de]
|
||||
|
||||
* Added support for limit/offset with the MS SQL Server driver so that pagination will now work #1569 [DeLynn Berry]
|
||||
|
||||
* Added support for ODBC connections to MS SQL Server so you can connect from a non-Windows machine #1569 [Mark Imbriaco/DeLynn Berry]
|
||||
|
||||
@@ -35,9 +35,26 @@ module ActiveRecord
|
||||
def acts_as_tree(options = {})
|
||||
configuration = { :foreign_key => "parent_id", :order => nil, :counter_cache => nil }
|
||||
configuration.update(options) if options.is_a?(Hash)
|
||||
|
||||
|
||||
belongs_to :parent, :class_name => name, :foreign_key => configuration[:foreign_key], :counter_cache => configuration[:counter_cache]
|
||||
has_many :children, :class_name => name, :foreign_key => configuration[:foreign_key], :order => configuration[:order], :dependent => true
|
||||
|
||||
module_eval <<-END
|
||||
def self.roots
|
||||
self.find(:all, :conditions => "#{configuration[:foreign_key]} IS NULL", :order => "#{configuration[:order]}")
|
||||
end
|
||||
def self.root
|
||||
self.find(:first, :conditions => "#{configuration[:foreign_key]} IS NULL", :order => "#{configuration[:order]}")
|
||||
end
|
||||
END
|
||||
|
||||
define_method(:siblings) do
|
||||
if parent
|
||||
self.class.find(:all, :conditions => [ "#{configuration[:foreign_key]} = ?", parent.id ], :order => configuration[:order])
|
||||
else
|
||||
self.class.roots
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user