]> source.dussan.org Git - redmine.git/commitdiff
Refactor: replace chained finders with an inject. Should handle edge cases better.
authorEric Davis <edavis@littlestreamsoftware.com>
Fri, 10 Sep 2010 19:53:57 +0000 (19:53 +0000)
committerEric Davis <edavis@littlestreamsoftware.com>
Fri, 10 Sep 2010 19:53:57 +0000 (19:53 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4079 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/query.rb

index 4b2cc75578175c993d0176bf19ecec5a045889ba..59131afcd230ad8e891c1137ce61267ec5f77671 100644 (file)
@@ -441,16 +441,21 @@ class Query < ActiveRecord::Base
       elsif field == "member_of_group" # named field
         if operator == '*' # Any group
           groups = Group.all
-          members_of_groups = groups.collect(&:user_ids).flatten.compact.collect(&:to_s)
           operator = '=' # Override the operator since we want to find by assigned_to
         elsif operator == "!*"
           groups = Group.all
-          members_of_groups = groups.collect(&:user_ids).flatten.compact.collect(&:to_s)
           operator = '!' # Override the operator since we want to find by assigned_to
         else
           groups = Group.find_all_by_id(v)
-          members_of_groups = groups.collect(&:user_ids).flatten.compact.collect(&:to_s)
         end
+        groups ||= []
+
+        members_of_groups = groups.inject([]) {|user_ids, group|
+          if group && group.user_ids.present?
+            user_ids << group.user_ids
+          end
+          user_ids.flatten.uniq.compact
+        }.sort.collect(&:to_s)
         
         sql << '(' + sql_for_field("assigned_to_id", operator, members_of_groups, Issue.table_name, "assigned_to_id", false) + ')'