diff options
author | Marcel Molina <marcel@vernix.org> | 2006-04-26 06:37:04 +0000 |
---|---|---|
committer | Marcel Molina <marcel@vernix.org> | 2006-04-26 06:37:04 +0000 |
commit | 91531372f9b7130f8a940cdb23f19984b65a60fa (patch) | |
tree | 096e1bc255bb6f7400fb919d4fb011fce5075d04 /activerecord/lib/active_record | |
parent | f274a89f8b23cedf020a1d59a8fe0438d6bc9be9 (diff) | |
download | rails-91531372f9b7130f8a940cdb23f19984b65a60fa.tar.gz rails-91531372f9b7130f8a940cdb23f19984b65a60fa.tar.bz2 rails-91531372f9b7130f8a940cdb23f19984b65a60fa.zip |
Add support for :order option to with_scope. Closes #3887. [eric.daspet@survol.net]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4274 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/lib/active_record')
-rwxr-xr-x | activerecord/lib/active_record/base.rb | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index d7cbd010da..d4345807a5 100755 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -837,7 +837,7 @@ module ActiveRecord #:nodoc: method_scoping.assert_valid_keys([ :find, :create ]) if f = method_scoping[:find] - f.assert_valid_keys([ :conditions, :joins, :select, :include, :from, :offset, :limit, :readonly ]) + f.assert_valid_keys([ :conditions, :joins, :select, :include, :from, :offset, :limit, :order, :readonly ]) f[:readonly] = true if !f[:joins].blank? && !f.has_key?(:readonly) end @@ -1012,8 +1012,8 @@ module ActiveRecord #:nodoc: add_conditions!(sql, options[:conditions], scope) sql << " GROUP BY #{options[:group]} " if options[:group] - sql << " ORDER BY #{options[:order]} " if options[:order] + add_order!(sql, options[:order]) add_limit!(sql, options, scope) sql @@ -1036,6 +1036,15 @@ module ActiveRecord #:nodoc: end end + def add_order!(sql, order) + if order + sql << " ORDER BY #{order}" + sql << ", #{scope(:find, :order)}" if scoped?(:find, :order) + else + sql << " ORDER BY #{scope(:find, :order)}" if scoped?(:find, :order) + end + end + # The optional scope argument is for the current :find scope. def add_limit!(sql, options, scope = :auto) scope = scope(:find) if :auto == scope |