summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/member_role.rb5
-rw-r--r--app/models/project.rb2
-rw-r--r--db/migrate/20161002133421_add_index_on_member_roles_inherited_from.rb5
3 files changed, 7 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)
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