访问ActiveAdmin时出现undefined method 'authenticate_admin_user!'错误

3

在更新了我的activeadmin之后,我无法进入管理员面板,我的管理员用户存储在名为admin_users的表中。

      NoMethodError in Admin::DashboardController#index

      undefined method `authenticate_admin_user!' for #Admin::DashboardController:0x007fe46c3d99d0
      Rails.root: /Users/jianbo/Documents/Aptana Studio 3 Workspace/iv

      Application Trace | Framework Trace | Full Trace
      activeadmin (0.6.2) lib/active_admin/base_controller.rb:40:in authenticate_active_admin_user'
      activesupport (3.2.15) lib/active_support/callbacks.rb:474:inblock in run_3994836635519503653__process_action__2211030722258422070__callbacks'
      activesupport (3.2.15) lib/active_support/callbacks.rb:215:in `block in conditionalcallback_around_863'
2个回答

3
作为ActiveAdmin配置的一部分,您需要在ApplicationController上定义一个需要身份验证的方法,并确定用户是否是管理员(因此可以访问ActiveAdmin页面)。该方法的名称可以通过ActiveAdmin初始化器中的此设置进行控制:
config.authentication_method = :authenticate_admin_user!

这个方法的默认名称是authenticate_admin_user!

如果您已经有一个验证用户并确认他们是管理员的方法,只需更新配置以使用该方法。否则,您需要在ApplicationController上创建此方法。


我注意到在active_admin中的代码已初始化,但我没有修改任何代码,为什么突然出现错误?在我的情况下,我没有任何自定义管理员身份验证,所以我不应该更改该配置,对吗?那我该怎么办? - user1883793
我不知道你从哪个版本升级过来,但可能在之前的版本中有一个默认方法。无论如何,只需定义该方法即可使其正常工作。你正在使用devise吗?你用于验证普通用户的方法是什么? - Peter Goldstein

0
确保你已经写了 devise_for :admin_users, ActiveAdmin::Devise.config 在我的情况下,我有 -- devise_for :users, ActiveAdmin::Devise.config 所以在更新后我们遇到了相同的问题,但是这样解决了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接