aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation/query_methods.rb
diff options
context:
space:
mode:
authorErnie Miller <ernie@metautonomo.us>2011-06-20 14:15:19 -0400
committerErnie Miller <ernie@metautonomo.us>2011-06-20 14:15:19 -0400
commit08f3f30994d37f6f44acfac801f82fc43127fc78 (patch)
tree01775f711e3eea882287303fb7c1490c239018c5 /activerecord/lib/active_record/relation/query_methods.rb
parent81f7bf55c7e15f05015e480505897a82b4038242 (diff)
downloadrails-08f3f30994d37f6f44acfac801f82fc43127fc78.tar.gz
rails-08f3f30994d37f6f44acfac801f82fc43127fc78.tar.bz2
rails-08f3f30994d37f6f44acfac801f82fc43127fc78.zip
Support reversal of ARel orderings in reverse_sql_order
Diffstat (limited to 'activerecord/lib/active_record/relation/query_methods.rb')
-rw-r--r--activerecord/lib/active_record/relation/query_methods.rb15
1 files changed, 12 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb
index 739363415c..7fbbefeea2 100644
--- a/activerecord/lib/active_record/relation/query_methods.rb
+++ b/activerecord/lib/active_record/relation/query_methods.rb
@@ -305,9 +305,18 @@ module ActiveRecord
def reverse_sql_order(order_query)
order_query = ["#{quoted_table_name}.#{quoted_primary_key} ASC"] if order_query.empty?
- order_query.join(', ').split(',').collect do |s|
- s.gsub!(/\sasc\Z/i, ' DESC') || s.gsub!(/\sdesc\Z/i, ' ASC') || s.concat(' DESC')
- end
+ order_query.map do |o|
+ case o
+ when Arel::Nodes::Ordering
+ o.reverse
+ when String, Symbol
+ o.to_s.split(',').collect do |s|
+ s.gsub!(/\sasc\Z/i, ' DESC') || s.gsub!(/\sdesc\Z/i, ' ASC') || s.concat(' DESC')
+ end
+ else
+ o
+ end
+ end.flatten
end
def array_of_strings?(o)