24 lines
597 B
Ruby
24 lines
597 B
Ruby
class UserRoleService
|
|
def initialize(user, role_names)
|
|
@user = user
|
|
@role_names = role_names.reject(&:blank?).uniq
|
|
end
|
|
|
|
def update_roles
|
|
@user.roles = Role.where(name: @role_names)
|
|
end
|
|
|
|
private
|
|
|
|
def remove_unassigned_roles
|
|
current_roles = @user.roles.pluck(:name)
|
|
roles_to_remove = current_roles - @role_names
|
|
roles_to_remove.each { |role| @user.remove_role(role) }
|
|
end
|
|
|
|
def add_new_roles
|
|
roles_to_add = @role_names - @user.roles.pluck(:name)
|
|
roles_to_add.each { |role| @user.add_role(role) }
|
|
end
|
|
end
|
|
|