Я бы порекомендовал дать «Ролифи» и «Канканкан» еще один шанс. Потому что после определения разрешений в файле Ability
вы можете просто проверить, есть ли у текущего пользователя разрешение с чем-то вроде can?(:read, ModelName)
в представлении. В других областях вы можете проверить на роль с user.has_role?(:admin)
или ж / д вы хотите назвать их.
Если вы просто не можете заставить их работать, вы можете использовать перечисление для создания / проверки роли.
class User < ApplicationRecord
enum role: %i[admin manager user]
end
И затем вы можете проверить правильность перечисления для просмотра чего-либо, например: user.admin?
Вы также можете довольно легко изменить «роль», создав для этого действие контроллера и просто позвонив user.admin!
или любой другой роли enum, которую вы хотели.