diff options
Diffstat (limited to 'lib/arel/select_manager.rb')
-rw-r--r-- | lib/arel/select_manager.rb | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/lib/arel/select_manager.rb b/lib/arel/select_manager.rb index 30495fc8d0..40e197910b 100644 --- a/lib/arel/select_manager.rb +++ b/lib/arel/select_manager.rb @@ -198,14 +198,12 @@ module Arel def collapse exprs return exprs.first if exprs.length == 1 - right = exprs.pop - left = exprs.pop - - right = Nodes::SqlLiteral.new(right) if String === right - - right = Nodes::And.new left, right - exprs.reverse.inject(right) { |memo,expr| - Nodes::And.new(expr, memo) + Nodes::And.new exprs.compact.map { |expr| + if String === expr + Arel.sql(expr) + else + expr + end } end end |