lib/postgres_ext/arel/4.2/visitors/postgresql.rb in postgres_ext-2.4.0.beta.1 vs lib/postgres_ext/arel/4.2/visitors/postgresql.rb in postgres_ext-2.4.0

- old
+ new

@@ -2,28 +2,42 @@ module Arel module Visitors class PostgreSQL private - + def visit_Arel_Nodes_ContainedWithin o, collector infix_value o, collector, " << " end def visit_Arel_Nodes_ContainedWithinEquals o, collector infix_value o, collector, " <<= " end def visit_Arel_Nodes_Contains o, collector - left_column = o.left.relation.engine.columns.find { |col| col.name == o.left.name.to_s } + left_column = o.left.relation.engine.columns.find do |col| + col.name == o.left.name.to_s || col.name == o.left.relation.name.to_s + end if left_column && (left_column.type == :hstore || (left_column.respond_to?(:array) && left_column.array)) - infix_value o, collector, " @> " + infix_value o, collector, " @> " else infix_value o, collector, " >> " end end + def visit_Arel_Nodes_ContainsINet o, collector + infix_value o, collector, " >> " + end + + def visit_Arel_Nodes_ContainsHStore o, collector + infix_value o, collector, " @> " + end + + def visit_Arel_Nodes_ContainsArray o, collector + infix_value o, collector, " @> " + end + def visit_Arel_Nodes_ContainsEquals o, collector infix_value o, collector, " >>= " end def visit_Arel_Nodes_Overlap o, collector