' CURRENT_USER'在rails_admin中未定义且有间隙

时间:2016-10-11 06:00:06

标签: ruby-on-rails rails-admin clearance

我已经成功使用了rails_admin v0.7.0和清除gem这一点。我今天尝试将rails_admin更新为v1.0,但是current_user收到了未定义的变量或方法错误。在v0.7.0中,RailsAdmin::MainController似乎继承自ApplicationController,而在v1.0中,它直接从ActionController::Base继承,这可以解释current_user现在未定义(我相信{ {1}}在current_user中定义了{gem}。但是,由于我没有找到有这个问题的其他人,我认为我必须遗漏一些东西。

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

配置/初始化/ rails_admin.rb

current_user

1 个答案:

答案 0 :(得分:9)

Rails管理员默认继承自::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

如果您需要,我已经创建了reference repo here进行比较。