活跃的管理员和 Pundit

Active admin and Pundit

我在使用 Pundit Rails 中安装 Active Admin gem 时遇到了一些困难。

在我的 Gemfile 中

gem 'activeadmin', github: 'activeadmin'

在我的active_admin.rb

def authenticate_admin!
  redirect_to new_user_session_path unless current_user && current_user.admin
end
ActiveAdmin.setup do |config|
  # [...]
  config.authentication_method = :authenticate_admin!
  # [...]
  config.current_user_method = :current_user
  # [...]
  config.logout_link_path = :destroy_user_session_path
  # [...]
  config.logout_link_method = :delete
end

当我转到 /admin 时出现此错误:

Pundit::PolicyScopingNotPerformedError at /admin

我想我必须定义一个策略,但我不知道在哪里。你有这方面的好教程吗?

我想你用这样的东西来验证政策的使用。

class ApplicationController < ActionController::Base
  include Pundit
  after_action :verify_authorized, except: :index
  after_action :verify_policy_scoped, only: :index
end

ActiveAdmin 不支持此项检查。您不能在 ApplicationController 中配置它们,或者您需要为所有 ActiveAdmin 控制器跳过它们