aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2014-01-13 16:33:31 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2014-01-13 16:33:31 -0800
commitb8264ef0b43802dbd658d947e1c043254c900cf4 (patch)
treee3a0cbca759fcf34ca47c99874bb3ee164635573 /activerecord/lib/active_record
parent5f2dd14d1353d1638c5b8731c6ecf546045d898c (diff)
downloadrails-b8264ef0b43802dbd658d947e1c043254c900cf4.tar.gz
rails-b8264ef0b43802dbd658d947e1c043254c900cf4.tar.bz2
rails-b8264ef0b43802dbd658d947e1c043254c900cf4.zip
replace bind values on calls to to_sql
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