aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract_adapter.rb4
-rw-r--r--activerecord/lib/active_record/relation.rb11
2 files changed, 6 insertions, 9 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
index ebf77b9bfb..605156c381 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
@@ -105,10 +105,6 @@ 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 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