Skip to content

Commit

Permalink
Refactor: replace chained finders with an inject. Should handle edge …
Browse files Browse the repository at this point in the history
…cases better.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4079 e93f8b46-1217-0410-a6f0-8f06a7374b81
  • Loading branch information
edavis10 committed Sep 10, 2010
1 parent 41f8d04 commit d36700e
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions app/models/query.rb
Original file line number Diff line number Diff line change
Expand Up @@ -441,16 +441,21 @@ def statement
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) + ')'

Expand Down

0 comments on commit d36700e

Please sign in to comment.