我正在使用 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 条件,这意味着“用户”参数为“nil”。当我尝试访问 rails_admin 时,出现 CanCan::AccessDenied 异常。我哪里错了?

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

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

最佳答案

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

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

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

关于ruby-on-rails - CanCan - "user"参数为零 - Rails 4,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23677534/

10-12 05:15