如何让Active Admin在登录后与Pundit合作

我已将配置权威addapter授权添加到我的应用程序中

config.authorization_adapter = ActiveAdmin::PunditAdapter 

当我使用admin@example.com凭据登录时,我收到此错误。

 Pundit::NotDefinedError in Admin::Dashboard#index unable to find policy AdminUserPolicy Extracted source (around line #2): insert_tag active_admin_application.view_factory["page"] 

所以我在policies / active_admin文件夹中创建了这些文件

adminuser_policy.rb

 module ActiveAdmin class AdminUserPolicy < ApplicationPolicy class Scope < Struct.new(:user, :scope) def resolve scope end end def home? true end def index? true end def show? true end def new? true end def create? true end def update? true end def destroy? true end end 

结束

page_policy.rb

 module ActiveAdmin class PagePolicy < ApplicationPolicy class Scope < Struct.new(:user, :scope) def resolve scope end end def index? true end def show? true end end end 

我错过了什么? 谢谢您的帮助!

我找到了答案!

将这两行添加到活动的admin初始化文件后

 config.authorization_adapter = ActiveAdmin::PunditAdapter #this line sets the default policy to application_policy.rb config.pundit_default_policy = "ApplicationPolicy" 

我不得不将此添加到app / admin / dashboard.rb下的dashboard.rb中

 def index authorize :dashboards, :index? end 

然后我在我的policies文件夹中创建了一个名为dashboard_policy.rb的文件并添加了此代码

 class DashboardPolicy < ApplicationPolicy def dashboard? true end def index? true end end 

这让它运作了!