diff options
author | Eric Davis <edavis@littlestreamsoftware.com> | 2010-09-10 19:53:57 +0000 |
---|---|---|
committer | Eric Davis <edavis@littlestreamsoftware.com> | 2010-09-10 19:53:57 +0000 |
commit | d36700eeee57dcd5da0078bf891b8186d30eb382 (patch) | |
tree | b5b959ae4240cf7d2814aaecc3156be655f68097 /app | |
parent | 41f8d043eb29452ff11baf5e5286cd907cda742e (diff) | |
download | redmine-d36700eeee57dcd5da0078bf891b8186d30eb382.tar.gz redmine-d36700eeee57dcd5da0078bf891b8186d30eb382.zip |
Refactor: replace chained finders with an inject. Should handle edge cases better.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4079 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r-- | app/models/query.rb | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/app/models/query.rb b/app/models/query.rb index 4b2cc7557..59131afcd 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -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) + ')' |