aboutsummaryrefslogblamecommitdiffstats
path: root/lib/arel/visitors/where_sql.rb
blob: 41972d5836136a8b2258eb210d195964796de32e (plain) (tree)
1
2
3
4
5
6
7
8
9
10


                                          




                                                  

             

                                                  
                                        
                                                                                        


                                              



         
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(@inner_visitor.accept(where, collector.class.new).value)
        end

        inject_join wheres, collector, ' AND '
      end
    end
  end
end