"current_user"未定义,rails_admin带间隙



我一直在使用rails_admin v0.7.0与清除宝石成功地到这一点。我试图将rails_admin更新到v1.0今天,但我得到一个未定义的变量或方法错误的current_user。在v0.7.0中,RailsAdmin::MainController似乎继承自ApplicationController,而在v1.0中,它直接继承自ActionController::Base,这将解释current_user现在未定义(我相信current_userApplicationController中定义了清除宝石)。然而,既然我没有找到有这个问题的其他人,我想我一定错过了什么。

我不是在这个应用程序上设置许可的人,但我不认为我们在做任何会影响这个的非标准的事情。Clearance::Controller包含在ApplicationController中。没有current_user的特殊定义。

配置初始化/rails_admin.rb

RailsAdmin.config do |config|
  # Popular gems integration
  ## Clearance
  config.authorize_with do |controller|
    unless current_user.admin?
      redirect_to(
        main_app.root_path,
        alert: "You are not permitted to view this page"
      )
    end
  end
  config.current_user_method { current_user }
end

你是正确的,Rails Admin从默认情况下继承::ActionController::Base,这就是导致你的问题。幸运的是,解决方法很简单。添加config.parent_controller = "::ApplicationController"config/initializers/rails_admin.rb:

RailsAdmin.config do |config|
  ## == Clearance ==
  config.parent_controller = "::ApplicationController"
  config.authorize_with do |controller|
    unless current_user && current_user.admin?
      redirect_to(
        main_app.root_path,
        alert: "You are not permitted to view this page"
      )
    end
  end
  # You actually don't need this line    
  # config.current_user_method { current_user }
end

如果你需要的话,我已经在这里创建了一个参考库供你比较。

相关内容

  • 没有找到相关文章

最新更新