我正在使用 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/