我已经成功使用了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
答案 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进行比较。