aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorMarcel Molina <marcel@vernix.org>2006-04-26 06:37:04 +0000
committerMarcel Molina <marcel@vernix.org>2006-04-26 06:37:04 +0000
commit91531372f9b7130f8a940cdb23f19984b65a60fa (patch)
tree096e1bc255bb6f7400fb919d4fb011fce5075d04 /activerecord/lib
parentf274a89f8b23cedf020a1d59a8fe0438d6bc9be9 (diff)
downloadrails-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')
-rwxr-xr-xactiverecord/lib/active_record/base.rb13
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