aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract_adapter.rb4
-rw-r--r--activerecord/lib/active_record/relation.rb8
2 files changed, 8 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
index 8aa1ce5c04..abf2cb3d3e 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
@@ -104,6 +104,10 @@ module ActiveRecord
@prepared_statements = false
end
+ def bind_substitution_visitor
+ @bind_sub_visitor ||= visitor.dup.extend(Arel::Visitors::BindVisitor)
+ end
+
def valid_type?(type)
true
end
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb
index c96fc6c2f2..661b6b17f0 100644
--- a/activerecord/lib/active_record/relation.rb
+++ b/activerecord/lib/active_record/relation.rb
@@ -518,15 +518,15 @@ module ActiveRecord
@to_sql ||= begin
relation = self
connection = klass.connection
- visitor = connection.visitor
+ visitor = connection.bind_substitution_visitor
if eager_loading?
find_with_associations { |rel| relation = rel }
end
- ast = relation.arel.ast
- binds = relation.bind_values.dup
- visitor.accept(ast) do
+ arel = relation.arel
+ binds = arel.bind_values + relation.bind_values
+ visitor.accept(arel.ast) do
connection.quote(*binds.shift.reverse)
end
end