Я работаю над приложением rails, где у меня есть пользователи.Роль - это еще один стол, где у меня есть админ / игрок.Мы реализовали has_many through
связь между моделью ролей и моделью пользователей.
Каждый пользователь может быть игроком, администратором или и тем, и другим.Только пользователь с ролью администратора может назначать роли другим пользователям.
Поэтому моя проблема в том, что я не могу ограничить пользователя в зависимости от его роли.Я использовал cancancan самоцвет для авторизации.Я пытался создать правильные способности, но теперь все пользователи могут назначать себе роли, которые я не хочу.Я хочу, чтобы только пользователь с ролью администратора мог назначать роли и выполнять все операции.Все остальные пользователи должны иметь возможность удалять / обновлять только свои данные.Я обнаружил, что «если user.admin?» Этот код не работает должным образом.если я дам elsif user.player?это дает ошибку неопределенным методом.
class Ability
include CanCan::Ability
def initialize(user)
if user.admin?
can :manage, :all
else
can :update, User, id: user.id
can :destroy, User , id: user.id
end
end
end
Я тоже пытался использовать следующий код
class Ability
include CanCan::Ability
def initialize(user)
if user.Role.name.admin?
can :manage, :all
elsif user.Role.name.player?
can :update,User, id: user.id
can :destroy,User , id: user.id
end
end
end
Please help me with proper guidance.