summaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2016-10-02 11:45:39 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2016-10-02 11:45:39 +0000
commitddf249d7b055baf04aa592d3ea91f1c5acac260a (patch)
treef10a622368363b9dbba3e105b9e25d3da0e2c4b8 /app/models
parent19934ec2db4ede2184eb74bd4850510dc0af0265 (diff)
downloadredmine-ddf249d7b055baf04aa592d3ea91f1c5acac260a.tar.gz
redmine-ddf249d7b055baf04aa592d3ea91f1c5acac260a.zip
Speedup remove_inherited_roles (#22850).
Patch by Pavel Rosický. git-svn-id: http://svn.redmine.org/redmine/trunk@15883 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models')
-rw-r--r--app/models/member_role.rb5
-rw-r--r--app/models/project.rb2
2 files changed, 2 insertions, 5 deletions
diff --git a/app/models/member_role.rb b/app/models/member_role.rb
index d65e7b606..99b9396d7 100644
--- a/app/models/member_role.rb
+++ b/app/models/member_role.rb
@@ -72,9 +72,6 @@ class MemberRole < ActiveRecord::Base
end
def remove_inherited_roles
- MemberRole.where(:inherited_from => id).group_by(&:member).
- each do |member, member_roles|
- member_roles.each(&:destroy)
- end
+ MemberRole.where(:inherited_from => id).destroy_all
end
end
diff --git a/app/models/project.rb b/app/models/project.rb
index c35a86780..e751c4b4c 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -844,7 +844,7 @@ class Project < ActiveRecord::Base
end
def remove_inherited_member_roles
- member_roles = memberships.map(&:member_roles).flatten
+ member_roles = MemberRole.where(:member_id => membership_ids).to_a
member_role_ids = member_roles.map(&:id)
member_roles.each do |member_role|
if member_role.inherited_from && !member_role_ids.include?(member_role.inherited_from)