diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2013-07-08 14:31:10 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2013-07-08 14:31:10 -0700 |
commit | 24c4195bab27ed9d76d0e126044e7f932de9e30e (patch) | |
tree | 0e2e11a310c0948ed2e7b3c3aeb9d9257005632a /activerecord | |
parent | b025fca0c50da0a6a4bf9cf18c8758ace1e1ed22 (diff) | |
download | rails-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')
-rw-r--r-- | activerecord/lib/active_record/relation.rb | 15 |
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 |