我正在使用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。仍然没有工作
答案 0 :(得分:10)
解决。在config/initializers/rails_admin.rb
中,我们必须将current_user_method
指定为
config.current_user_method { current_user } # refers to the current_user helper method in my case
现在一切都很完美。我很惊讶为什么在文档中的任何地方都没有指定。