aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/sanitization.rb
diff options
context:
space:
mode:
authorBen Toews <mastahyeti@gmail.com>2017-10-12 11:48:48 -0600
committerMatthew Draper <matthew@trebex.net>2017-11-09 22:42:15 +1030
commitb76cc29865fb69389ffdb7bd9f8085aa86354f82 (patch)
treef546036743fc345ad94aebffab24a5b51821f074 /activerecord/lib/active_record/sanitization.rb
parentc711a27d29a3201ff47751a1d788f1e634186dd3 (diff)
downloadrails-b76cc29865fb69389ffdb7bd9f8085aa86354f82.tar.gz
rails-b76cc29865fb69389ffdb7bd9f8085aa86354f82.tar.bz2
rails-b76cc29865fb69389ffdb7bd9f8085aa86354f82.zip
deal with Array arguments to #order
Diffstat (limited to 'activerecord/lib/active_record/sanitization.rb')
-rw-r--r--activerecord/lib/active_record/sanitization.rb6
1 files changed, 6 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/sanitization.rb b/activerecord/lib/active_record/sanitization.rb
index 1c3099f55c..4caf1145f0 100644
--- a/activerecord/lib/active_record/sanitization.rb
+++ b/activerecord/lib/active_record/sanitization.rb
@@ -63,6 +63,12 @@ module ActiveRecord
# # => "id ASC"
def sanitize_sql_for_order(condition) # :doc:
if condition.is_a?(Array) && condition.first.to_s.include?("?")
+ # Ensure we aren't dealing with a subclass of String that might
+ # override methods we use (eg. Arel::Nodes::SqlLiteral).
+ if condition.first.kind_of?(String) && !condition.first.instance_of?(String)
+ condition = [String.new(condition.first), *condition[1..-1]]
+ end
+
sanitize_sql_array(condition)
else
condition