From 3e3d4d197943d6fc30976021a0f125ba8eab1dd1 Mon Sep 17 00:00:00 2001 From: Ernie Miller Date: Tue, 19 Apr 2011 00:05:19 +0800 Subject: [PATCH] Improve performance of grouping_any/grouping_all --- lib/arel/predications.rb | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/lib/arel/predications.rb b/lib/arel/predications.rb index 75c4c75855..7e2425e45f 100644 --- a/lib/arel/predications.rb +++ b/lib/arel/predications.rb @@ -163,21 +163,14 @@ def desc private def grouping_any method_id, others - others = others.dup - first = send method_id, others.shift - - Nodes::Grouping.new others.inject(first) { |memo,expr| - Nodes::Or.new(memo, send(method_id, expr)) + nodes = others.map {|expr| send(method_id, expr)} + Nodes::Grouping.new nodes.inject { |memo,node| + Nodes::Or.new(memo, node) } end def grouping_all method_id, others - others = others.dup - first = send method_id, others.shift - - Nodes::Grouping.new others.inject(first) { |memo,expr| - Nodes::And.new([memo, send(method_id, expr)]) - } + Nodes::Grouping.new Nodes::And.new(others.map {|expr| send(method_id, expr)}) end end end -- GitLab