我提前为我的英语和红宝石知识道歉:) 我使用 RailsAdmin 创建管理面板,使用设计进行身份验证,使用 CanCanCan 进行授权,因此,我在用户中有三个布尔字段:
add_column :users, :superadmin_role, :boolean, default: false
enter code hereadd_column :users, :manager_role, :boolean, default:
所以,在 ability.rb 中我有这个:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
can :access, :dashboard # allow access to dashboard
can :access, :rails_admin # access Rails Admin for Admin-users
if user.superadmin_role?
can :manage, :all
end # role works correct
if user.manager_role?
can :read, :all
end #role works incorrect
end
end
SUPERADMIN_ROLE工作正常并允许输入RailsAdmin等,但MANAGER_ROLE不起作用 - 当用户尝试在Dashboard中输入时,会显示Access Denied错误消息:
如何为manager_role提供对仪表板和RailsAdmin界面的访问 - 打破了整个大脑。
我很乐意提供任何帮助(准备好的代码,链接@where阅读等)和建设性的批评
答案 0 :(得分:0)
cancancan2需要RailsAdmin的不同适配器。请查看此问题:https://github.com/CanCanCommunity/cancancan/issues/413此问题:https://github.com/sferik/rails_admin/issues/2901。
在第一个链接上,您将找到创建适配器所需的代码。