diff options
author | Xavier Noria <fxn@hashref.com> | 2010-05-09 11:46:45 +0200 |
---|---|---|
committer | Xavier Noria <fxn@hashref.com> | 2010-05-09 11:46:45 +0200 |
commit | e1a0d86fe0355ddff8c86db0f42f3824ffe14c02 (patch) | |
tree | 5833022ca41905f243c15c8a5ffdf864de69bfa6 /activerecord/lib/active_record/relation/spawn_methods.rb | |
parent | 1ff3d951e620ddeeb97e87e2024391470e886467 (diff) | |
parent | df508bd97062b871fe25eda8d1bb61cd43d79bc4 (diff) | |
download | rails-e1a0d86fe0355ddff8c86db0f42f3824ffe14c02.tar.gz rails-e1a0d86fe0355ddff8c86db0f42f3824ffe14c02.tar.bz2 rails-e1a0d86fe0355ddff8c86db0f42f3824ffe14c02.zip |
Merge remote branch 'rails/master'
Diffstat (limited to 'activerecord/lib/active_record/relation/spawn_methods.rb')
-rw-r--r-- | activerecord/lib/active_record/relation/spawn_methods.rb | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/relation/spawn_methods.rb b/activerecord/lib/active_record/relation/spawn_methods.rb index 8fdd64afcc..bb1f138f5b 100644 --- a/activerecord/lib/active_record/relation/spawn_methods.rb +++ b/activerecord/lib/active_record/relation/spawn_methods.rb @@ -80,10 +80,15 @@ module ActiveRecord options.assert_valid_keys(VALID_FIND_OPTIONS) - [:joins, :select, :group, :having, :order, :limit, :offset, :from, :lock, :readonly].each do |finder| + [:joins, :select, :group, :having, :limit, :offset, :from, :lock, :readonly].each do |finder| relation = relation.send(finder, options[finder]) if options.has_key?(finder) end + # Give precedence to newly-applied orders and groups to play nicely with with_scope + [:group, :order].each do |finder| + relation.send("#{finder}_values=", Array.wrap(options[finder]) + relation.send("#{finder}_values")) if options.has_key?(finder) + end + relation = relation.where(options[:conditions]) if options.has_key?(:conditions) relation = relation.includes(options[:include]) if options.has_key?(:include) relation = relation.extending(options[:extend]) if options.has_key?(:extend) |