diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2009-12-13 12:39:22 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2009-12-13 12:39:22 +0000 |
commit | f33231181f9591ee67577e229a8bf6de24516ba0 (patch) | |
tree | 57bbc4338b9cf35cecf323565fefbf549ecfd14f /app/models/member_role.rb | |
parent | c31a6719735114c371e5da68eb3787b8713c5360 (diff) | |
download | redmine-f33231181f9591ee67577e229a8bf6de24516ba0.tar.gz redmine-f33231181f9591ee67577e229a8bf6de24516ba0.zip |
Makes user unwatch what he can no longer view after its permissions have changed (#3589).
A rake task (redmine:watchers:prune) is also added to prune existing watchers.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3167 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/member_role.rb')
-rw-r--r-- | app/models/member_role.rb | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/app/models/member_role.rb b/app/models/member_role.rb index 5a31c17c5..286659fc3 100644 --- a/app/models/member_role.rb +++ b/app/models/member_role.rb @@ -49,6 +49,11 @@ class MemberRole < ActiveRecord::Base end def remove_role_from_group_users - MemberRole.find(:all, :conditions => { :inherited_from => id }).each(&:destroy) + MemberRole.find(:all, :conditions => { :inherited_from => id }).group_by(&:member).each do |member, member_roles| + member_roles.each(&:destroy) + if member && member.user + Watcher.prune(:user => member.user, :project => member.project) + end + end end end |