From ddf249d7b055baf04aa592d3ea91f1c5acac260a Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 2 Oct 2016 11:45:39 +0000 Subject: [PATCH] Speedup remove_inherited_roles (#22850). MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Patch by Pavel Rosický. git-svn-id: http://svn.redmine.org/redmine/trunk@15883 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/member_role.rb | 5 +---- app/models/project.rb | 2 +- ...0161002133421_add_index_on_member_roles_inherited_from.rb | 5 +++++ 3 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 db/migrate/20161002133421_add_index_on_member_roles_inherited_from.rb 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) diff --git a/db/migrate/20161002133421_add_index_on_member_roles_inherited_from.rb b/db/migrate/20161002133421_add_index_on_member_roles_inherited_from.rb new file mode 100644 index 000000000..2a06a9e6c --- /dev/null +++ b/db/migrate/20161002133421_add_index_on_member_roles_inherited_from.rb @@ -0,0 +1,5 @@ +class AddIndexOnMemberRolesInheritedFrom < ActiveRecord::Migration + def change + add_index :member_roles, :inherited_from + end +end -- 2.39.5