首页 > 解决方案 > Cancancan ActiveAdmin:跳过对 :create 的授权

问题描述

我在 ActiveAdmin 中使用 Cancancan 进行授权。除了 :create 一切正常。创建新管理员时,cancancan 会检查 admin_user.id = id。但是,ActiveAdmin 使 id = nil,所以我无法创建新管理员。

  include CanCan::Ability

  def initialize(admin_user)
    can :manage, AdminUser, id: admin_user.id
    ....

  end
end 

我的解决方案是每个人都可以跳过创建授权。我的应用程序控制器:

class ApplicationController < ActionController::Base
  load_and_authorize_resource 
  skip_authorize_resource :only => :new  
end 

但它什么也没做。请帮忙!

标签: ruby-on-railsrubyactiveadmincancancan

解决方案


您可以像这样指定哪些操作需要授权...

def initialize(admin_user)
  can [:edit, :destroy], AdminUser, id: admin_user.id
end

[:edit, :destroy]只需使用您需要该授权的任何操作 替换/添加到。

如果您希望所有管理员用户都能够对 AdminUser 执行操作...

can :some_action, AdminUser

推荐阅读