diff options
Diffstat (limited to 'lib/arel')
-rw-r--r-- | lib/arel/select_manager.rb | 2 | ||||
-rw-r--r-- | lib/arel/visitors/where_sql.rb | 7 |
2 files changed, 7 insertions, 2 deletions
diff --git a/lib/arel/select_manager.rb b/lib/arel/select_manager.rb index f7dec87ca3..eae3bc8cbc 100644 --- a/lib/arel/select_manager.rb +++ b/lib/arel/select_manager.rb @@ -179,7 +179,7 @@ module Arel def where_sql engine = Table.engine return if @ctx.wheres.empty? - viz = Visitors::WhereSql.new engine.connection + viz = Visitors::WhereSql.new(engine.connection.visitor, engine.connection) Nodes::SqlLiteral.new viz.accept(@ctx, Collectors::SQLString.new).value end diff --git a/lib/arel/visitors/where_sql.rb b/lib/arel/visitors/where_sql.rb index 80797205c9..41972d5836 100644 --- a/lib/arel/visitors/where_sql.rb +++ b/lib/arel/visitors/where_sql.rb @@ -1,12 +1,17 @@ module Arel module Visitors class WhereSql < Arel::Visitors::ToSql + def initialize(inner_visitor, *args, &block) + @inner_visitor = inner_visitor + super(*args, &block) + end + private def visit_Arel_Nodes_SelectCore o, collector collector << "WHERE " wheres = o.wheres.map do |where| - Nodes::SqlLiteral.new(@connection.visitor.accept(where, collector.class.new).value) + Nodes::SqlLiteral.new(@inner_visitor.accept(where, collector.class.new).value) end inject_join wheres, collector, ' AND ' |