aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2013-07-08 14:31:10 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2013-07-08 14:31:10 -0700
commit24c4195bab27ed9d76d0e126044e7f932de9e30e (patch)
tree0e2e11a310c0948ed2e7b3c3aeb9d9257005632a /activerecord/lib
parentb025fca0c50da0a6a4bf9cf18c8758ace1e1ed22 (diff)
downloadrails-24c4195bab27ed9d76d0e126044e7f932de9e30e.tar.gz
rails-24c4195bab27ed9d76d0e126044e7f932de9e30e.tar.bz2
rails-24c4195bab27ed9d76d0e126044e7f932de9e30e.zip
refactor to_sql so it does not depend on the to_sql implementation of
the connection
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/relation.rb15
1 files changed, 11 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb
index 612f376c55..4e86e905ed 100644
--- a/activerecord/lib/active_record/relation.rb
+++ b/activerecord/lib/active_record/relation.rb
@@ -502,12 +502,19 @@ module ActiveRecord
# # => SELECT "users".* FROM "users" WHERE "users"."name" = 'Oscar'
def to_sql
@to_sql ||= begin
+ relation = self
+ connection = klass.connection
+ visitor = connection.visitor
+
if eager_loading?
join_dependency = construct_join_dependency
- relation = construct_relation_for_association_find(join_dependency)
- klass.connection.to_sql(relation.arel, relation.bind_values)
- else
- klass.connection.to_sql(arel, bind_values.dup)
+ relation = construct_relation_for_association_find(join_dependency)
+ end
+
+ ast = relation.arel.ast
+ binds = relation.bind_values.dup
+ visitor.accept(ast) do
+ connection.quote(*binds.shift.reverse)
end
end
end