Rails_admin和pundit:#RailsAdmin :: MainController的未定义方法`policy’

在此处输入图像描述 我正在使用rails 5,我正在尝试使用pundit为我的rails_admin面板实现授权。 所以我在我的应用程序控制器中包含了pundit并安装了rails_admin_pundit gem ,你可以在我的Gemfile的这个片段中看到:

gem 'devise' gem 'devise-i18n' gem 'rails_admin', '~> 1.0' gem 'rails_admin-i18n' gem 'rails_admin_tag_list', github: 'kryzhovnik/rails_admin_tag_list' gem 'pundit' gem "rails_admin_pundit", :github => "sudosu/rails_admin_pundit" 

申请政策:

 class ApplicationPolicy attr_reader :current_user, :record def initialize(current_user, record) @user = current_user @record = record end def index? false end def show? scope.where(:id => record.id).exists? end def create? false end def new? create? end def update? false end def edit? update? end def destroy? false end def rails_admin?(action) case action when :dashboard @user.admin? when :index @user.admin? when :show @user.admin? when :new @user.admin? when :edit @user.admin? when :destroy @user.admin? when :export @user.admin? when :history @user.admin? when :show_in_app @user.admin? else raise ::Pundit::NotDefinedError, "unable to find policy #{action} for #{record}." end end end 

还有我的rails_admin初始化程序的片段:

 RailsAdmin.config do |config| config.authorize_with :pundit config.current_user_method(&:current_user) ... end 

所以现在当我加载管理仪表板(url:“/ admin”)时,我收到此错误:

#RailsAdmin :: MainController的未定义方法`policy’:0x0055914e2523a0>

我遵循了所有指示,但我仍然没有看到缺少的东西。 任何答案/建议将不胜感激。

这也让我感到烦恼。 最终发现: https : //travis-ci.org/sferik/rails_admin/jobs/152180750

rails_admin现在默认为::ActionController::Base

要修复,请将以下内容放在rails_admin.rb中:

config.parent_controller = '::ApplicationController'