obdev/app/services/user_role_service.rb

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