RailsAdmin + Devise + CanCanCan角色不能在没有:manage:all的情况下工作

时间:2017-07-18 11:21:09

标签: ruby-on-rails ruby devise rails-admin cancancan

我提前为我的英语和红宝石知识道歉:) 我使用 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错误消息:

Dashboard Access Denied Error

如何为manager_role提供对仪表板和RailsAdmin界面的访问 - 打破了整个大脑。

我很乐意提供任何帮助(准备好的代码,链接@where阅读等)和建设性的批评

1 个答案:

答案 0 :(得分:0)

cancancan2需要RailsAdmin的不同适配器。请查看此问题:https://github.com/CanCanCommunity/cancancan/issues/413此问题:https://github.com/sferik/rails_admin/issues/2901

在第一个链接上,您将找到创建适配器所需的代码。