【问题标题】:Active Admin cancan ActiveRecord::RecordNotFound in Admin::AdminUsersController#showActive Admin cancan ActiveRecord::RecordNotFound in Admin::AdminUsersController#show
【发布时间】:2014-10-28 14:21:00
【问题描述】:

我有这个: 能力.rb

  def initialize(user)    
      if user.admin?
        can :manage, :all
      else
        can :manage, AdminUser, :id => user.id
      end
  end

在 application_controller.rb 中:

def access_denied(exception)
  redirect_to admin_dashboard_path , :alert =>  exception.message
end

我还在 intializer/active_admin.rb 中添加了活动管理员的适配器:

  config.authentication_method = :authenticate_admin_user!
  config.authorization_adapter = ActiveAdmin::CanCanAdapter
  config.on_unauthorized_access = :access_denied 

当我访问他无权访问的网址时(例如:http://admin.localhost.com:3000/admin/admin_users/1)。其给出的错误为:

ActiveRecord::RecordNotFound in Admin::AdminUsersController#show

谁能指出我在这里所缺少的正确方向。

提前致谢。

【问题讨论】:

    标签: ruby-on-rails activeadmin cancan


    【解决方案1】:

    当 Active Record 无法通过给定的 id 或一组 id 找到记录时会引发错误。请检查 admin_users 表中是否有 id 为 1 的条目。请参阅下图以更好地理解错误。

    【讨论】:

    • 是的,我的数据库中存在 id user.id 1 存在,但由于当前用户无权查看其他用户,这就是它给出错误的原因。
    • @dinshawraje 好的,似乎逻辑在某种程度上起作用。具有正确凭据的用户可以查看该页面吗?
    【解决方案2】:

    我已通过将 active_admin gem 升级到 gem 'activeadmin','0.6.3' 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      相关资源
      最近更新 更多