aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel/select_manager.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/arel/select_manager.rb')
-rw-r--r--lib/arel/select_manager.rb14
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