'current_user' 在 rails_admin 中未定义,有间隙
'current_user' undefined in rails_admin with 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
现在未定义(我相信 current_user
在 ApplicationController
中定义,间隙为 gem)。但是,由于我没有发现其他人有这个问题,我想我一定是遗漏了什么。
我不是在这个应用程序上设置许可的人,但我不认为我们正在做任何会影响它的非标准操作。 Clearance::Controller
包含在 ApplicationController
中。 current_user
.
没有特殊定义
config/initializers/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
我创建了一个 reference repo here 供您比较,如果您需要的话。
到目前为止,我一直在使用 rails_admin v0.7.0 并获得许可 gem。我今天尝试将 rails_admin 更新到 v1.0,但收到 current_user
的未定义变量或方法错误。在 v0.7.0 中,RailsAdmin::MainController
似乎继承自 ApplicationController
,而在 v1.0 中,它直接继承自 ActionController::Base
,这将解释 current_user
现在未定义(我相信 current_user
在 ApplicationController
中定义,间隙为 gem)。但是,由于我没有发现其他人有这个问题,我想我一定是遗漏了什么。
我不是在这个应用程序上设置许可的人,但我不认为我们正在做任何会影响它的非标准操作。 Clearance::Controller
包含在 ApplicationController
中。 current_user
.
config/initializers/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
我创建了一个 reference repo here 供您比较,如果您需要的话。