【问题标题】:CanCan - "user" parameter is nil - Rails 4CanCan - “用户”参数为零 - Rails 4
【发布时间】:2014-05-15 11:57:23
【问题描述】:

我正在使用 Rails 4.0.1 和 ruby​​ 2.1.1。我正在尝试将 cancan 与 rails_admin 集成。我的application_controller.rb 是这样的

helper_method :current_user

private

def current_user
  @current_user ||= User.find_by(email: session[:user_id]) if session[:user_id]
end 

我的 current_user 辅助方法在应用程序的其余部分运行良好。我的ability.rb 是这样的

class Ablity
  include CanCan::Ability

   def initialize(user)
     if user
       can :access, :rails_admin
     end
   end
end

控件根本没有进入 if 条件,这意味着“user”参数为“nil”。当我尝试访问 rails_admin 时,我得到一个 CanCan::AccessDenied 异常。我哪里错了?

编辑:我没有使用设备进行身份验证

更新:我已将 cancan 替换为 cancancan 1.8 版。还是不行

【问题讨论】:

  • 您是否使用设备进行身份验证?
  • 不。我的身份验证取决于REST 调用。所以我使用自己定制的身份验证。
  • 尝试在protected而不是private下定义你的current_user方法
  • cancan 与 Rails 4 不兼容,不再维护。请改用cancancangithub.com/CanCanCommunity/cancancan
  • 我已经将它与我的 rails 4 应用程序一起使用

标签: ruby-on-rails ruby ruby-on-rails-4 cancan rails-admin


【解决方案1】:

解决了。在config/initializers/rails_admin.rb 中,我们必须将current_user_method 指定为

config.current_user_method { current_user } # refers to the current_user helper method in my case

现在一切正常。我很惊讶为什么没有在文档中的任何地方指定这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 2014-08-06
    • 2013-09-04
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多