Index: member.rb =================================================================== --- member.rb (revision 19489) +++ member.rb (working copy) @@ -64,15 +64,14 @@ ids = (arg || []).collect(&:to_i) - [0] # Keep inherited roles ids += member_roles.select {|mr| !mr.inherited_from.nil?}.collect(&:role_id) - - new_role_ids = ids - role_ids - # Add new roles - new_role_ids.each {|id| member_roles << MemberRole.new(:role_id => id, :member => self) } # 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.reload + # Add new roles + super(ids) end def <=>(member)