Как я могу проверить наличие хотя бы одной роли для Пользователя с помощью rolify gem?Я попытался проверить наличие ролей в User.rb, как показано ниже, но это не работает.
Бонус: возможно ли запретить администратору снимать свою собственную роль администратора?
User.rb:
class User < ApplicationRecord
rolify
validates :roles, presence: true
end
Форма редактирования:
= form_for @user do |f|
- Role.all.each do |role|
= check_box_tag "user[role_ids][]", role.id, @user.role_ids.include?(role.id)
= role.name
= f.submit
Контроллер:
class UsersController < ApplicationController
before_action :set_user, only: [:edit, :update, :destroy]
def edit
authorize @user
end
def update
authorize @user
if @user.update(user_params)
redirect_to users_path
else
render :edit
end
end
private
def set_user
@user = User.find(params[:id])
end
def user_params
params.require(:user).permit({role_ids: []})
end
end
Когда у пользователя 1+ ролей, он работает нормально, но если я уберу все роли, он выдаст ошибку: