aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/relation.rb')
-rw-r--r--activerecord/lib/active_record/relation.rb11
1 files changed, 6 insertions, 5 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb
index 90bf751206..a0e84201be 100644
--- a/activerecord/lib/active_record/relation.rb
+++ b/activerecord/lib/active_record/relation.rb
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+require 'arel/collectors/bind'
module ActiveRecord
# = Active Record Relation
@@ -512,17 +513,17 @@ module ActiveRecord
@to_sql ||= begin
relation = self
connection = klass.connection
- visitor = connection.bind_substitution_visitor
+ visitor = connection.visitor
if eager_loading?
find_with_associations { |rel| relation = rel }
end
arel = relation.arel
- binds = arel.bind_values + relation.bind_values
- visitor.compile(arel.ast) do
- connection.quote(*binds.shift.reverse)
- end
+ binds = (arel.bind_values + relation.bind_values).dup
+ binds.map! { |bv| connection.quote(*bv.reverse) }
+ collect = visitor.accept(arel.ast, Arel::Collectors::Bind.new)
+ collect.substitute_binds(binds).join
end
end