diff options
Diffstat (limited to 'lib/arel')
-rw-r--r-- | lib/arel/nodes.rb | 1 | ||||
-rw-r--r-- | lib/arel/nodes/and.rb | 6 | ||||
-rw-r--r-- | lib/arel/nodes/binary.rb | 4 | ||||
-rw-r--r-- | lib/arel/visitors/to_sql.rb | 4 |
4 files changed, 15 insertions, 0 deletions
diff --git a/lib/arel/nodes.rb b/lib/arel/nodes.rb index 98fc045690..f2332694a8 100644 --- a/lib/arel/nodes.rb +++ b/lib/arel/nodes.rb @@ -1,6 +1,7 @@ require 'arel/nodes/binary' require 'arel/nodes/equality' require 'arel/nodes/or' +require 'arel/nodes/and' require 'arel/nodes/in' require 'arel/nodes/count' diff --git a/lib/arel/nodes/and.rb b/lib/arel/nodes/and.rb new file mode 100644 index 0000000000..80f420b4f1 --- /dev/null +++ b/lib/arel/nodes/and.rb @@ -0,0 +1,6 @@ +module Arel + module Nodes + class And < Arel::Nodes::Binary + end + end +end diff --git a/lib/arel/nodes/binary.rb b/lib/arel/nodes/binary.rb index fdfcab2d3f..3cd9583e79 100644 --- a/lib/arel/nodes/binary.rb +++ b/lib/arel/nodes/binary.rb @@ -12,6 +12,10 @@ module Arel Nodes::Or.new self, right end + def and right + Nodes::And.new self, right + end + # FIXME: this method should go away. I don't like people calling # to_sql on non-head nodes. This forces us to walk the AST until we # can find a node that has a "relation" member. diff --git a/lib/arel/visitors/to_sql.rb b/lib/arel/visitors/to_sql.rb index 6576d82c41..8136039040 100644 --- a/lib/arel/visitors/to_sql.rb +++ b/lib/arel/visitors/to_sql.rb @@ -86,6 +86,10 @@ module Arel "#{visit o.left} IN (#{o.right.map { |x| visit x }.join ', '})" end + def visit_Arel_Nodes_And o + "#{visit o.left} AND #{visit o.right}" + end + def visit_Arel_Nodes_Or o "#{visit o.left} OR #{visit o.right}" end |