Cancancan ActiveAdmin:跳过对:create

时间:2018-07-29 06:19:16

标签: ruby-on-rails ruby activeadmin cancancan

我正在使用Cancancan在ActiveAdmin中进行授权。 除了: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 

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

can :some_action, AdminUser