Commit d36700ee authored by Eric Davis's avatar Eric Davis

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
parent 41f8d043
......@@ -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) + ')'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment