diff options
author | Bogdan Gusiev <agresso@gmail.com> | 2012-07-31 10:24:18 +0300 |
---|---|---|
committer | Bogdan Gusiev <agresso@gmail.com> | 2012-07-31 10:24:18 +0300 |
commit | 92641efeecae0910c6292c0c6bf071197b24e63d (patch) | |
tree | da8e0b8ad3660b3b0670d05959f233a414a0836a /activerecord/lib/active_record/relation | |
parent | 10cdeb867bb4b5534c575b0eb3f03e6719269875 (diff) | |
download | rails-92641efeecae0910c6292c0c6bf071197b24e63d.tar.gz rails-92641efeecae0910c6292c0c6bf071197b24e63d.tar.bz2 rails-92641efeecae0910c6292c0c6bf071197b24e63d.zip |
AR::Relation#order: make new order prepend old one
User.order("name asc").order("created_at desc")
# SELECT * FROM users ORDER BY created_at desc, name asc
This also affects order defined in `default_scope` or any kind of associations.
Diffstat (limited to 'activerecord/lib/active_record/relation')
-rw-r--r-- | activerecord/lib/active_record/relation/finder_methods.rb | 2 | ||||
-rw-r--r-- | activerecord/lib/active_record/relation/query_methods.rb | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb index c01aed2d8e..97c3db683f 100644 --- a/activerecord/lib/active_record/relation/finder_methods.rb +++ b/activerecord/lib/active_record/relation/finder_methods.rb @@ -311,7 +311,7 @@ module ActiveRecord @records.first else @first ||= - if order_values.empty? && primary_key + if with_default_scope.order_values.empty? && primary_key order(arel_table[primary_key].asc).limit(1).to_a.first else limit(1).to_a.first diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb index 94db2846f3..967b82aeb9 100644 --- a/activerecord/lib/active_record/relation/query_methods.rb +++ b/activerecord/lib/active_record/relation/query_methods.rb @@ -214,7 +214,7 @@ module ActiveRecord references.map! { |arg| arg =~ /^([a-zA-Z]\w*)\.(\w+)/ && $1 }.compact! references!(references) if references.any? - self.order_values += args + self.order_values = args + self.order_values self end @@ -226,7 +226,7 @@ module ActiveRecord # # User.order('email DESC').reorder('id ASC').order('name ASC') # - # generates a query with 'ORDER BY id ASC, name ASC'. + # generates a query with 'ORDER BY name ASC, id ASC'. def reorder(*args) args.blank? ? self : spawn.reorder!(*args) end |