Defect #32935 » member.rb.patch
member.rb (working copy) | ||
---|---|---|
64 | 64 |
ids = (arg || []).collect(&:to_i) - [0] |
65 | 65 |
# Keep inherited roles |
66 | 66 |
ids += member_roles.select {|mr| !mr.inherited_from.nil?}.collect(&:role_id) |
67 | ||
68 |
new_role_ids = ids - role_ids |
|
69 |
# Add new roles |
|
70 |
new_role_ids.each {|id| member_roles << MemberRole.new(:role_id => id, :member => self) } |
|
71 | 67 |
# Remove roles (Rails' #role_ids= will not trigger MemberRole#on_destroy) |
72 | 68 |
member_roles_to_destroy = member_roles.select {|mr| !ids.include?(mr.role_id)} |
73 | 69 |
if member_roles_to_destroy.any? |
74 | 70 |
member_roles_to_destroy.each(&:destroy) |
75 | 71 |
end |
72 |
member_roles.reload |
|
73 |
# Add new roles |
|
74 |
super(ids) |
|
76 | 75 |
end |
77 | 76 | |
78 | 77 |
def <=>(member) |