diff options
author | Go MAEDA <maeda@farend.jp> | 2025-01-21 01:50:28 +0000 |
---|---|---|
committer | Go MAEDA <maeda@farend.jp> | 2025-01-21 01:50:28 +0000 |
commit | 7ca4cf24c067b8f733bd3000269019c034965b75 (patch) | |
tree | c98574bcb25770311874d7f5498fd6b338234267 | |
parent | 2ffe3fa547767d312158f7dee69dcee3bc9460d8 (diff) | |
download | redmine-7ca4cf24c067b8f733bd3000269019c034965b75.tar.gz redmine-7ca4cf24c067b8f733bd3000269019c034965b75.zip |
Refactor `Member#role_ids=` method for improved clarity and effficiency in removing obsolete member roles (#42124).
Patch by Go MAEDA (user:maeda).
git-svn-id: https://svn.redmine.org/redmine/trunk@23451 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/models/member.rb | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/app/models/member.rb b/app/models/member.rb index f4fedc0db..b0d5c35fc 100644 --- a/app/models/member.rb +++ b/app/models/member.rb @@ -67,15 +67,13 @@ class Member < ApplicationRecord ids |= member_roles.select {|mr| !mr.inherited_from.nil?}.collect(&:role_id) new_role_ids = ids - role_ids + obsolete_role_ids = role_ids - ids # Add new roles new_role_ids.each do |id| member_roles << MemberRole.new(:role_id => id, :member => self) end # Remove roles (Rails' #role_ids= will not trigger MemberRole#on_destroy) - member_roles_to_destroy = member_roles.select {|mr| !ids.include?(mr.role_id)} - if member_roles_to_destroy.any? - member_roles_to_destroy.each(&:destroy) - end + member_roles.where(role_id: obsolete_role_ids).destroy_all member_roles.reload super(ids) end |