NameError (undefined local variable or method "current_user" for #<APIRouter:0x007ffd54a81f98>):
当我尝试在比赛中使用 current_user 时出现错误?约束。我希望某些虚拟用户被路由到一组控制器,而其他用户被路由到另一组控制器。但是,当我尝试使用 current_user 时出现错误。
- 设计(2.0.4)
- 导轨 (3.2.2)
我的匹配约束在 APIRouter 类中定义:
class APIRouter
def matches? request
@use_rm_app = ENV["USE_RM_APP"] == "true" || (current_user && current_user.is_test)
end
end
关于如何在比赛中使用当前用户的任何想法?Rails 指南中定义的约束。
routes.rb 文件中的部分:
# Route to the rm_app controller if APIRouter says we should, otherwise use the real backend controllers.
match '/api/v1/*path', :controller => 'api/v1',
:action => 'handle_create_request',
:via => :post, :constraints => APIRouter.new
更新:感谢 ksol 解决。 尝试 3 有效。获取用户使用request.env["warden"].user(:user)
解决办法是修改APIRouter
def matches? request
user = request.env["warden"].user(:user)
(user && user.is_test) || ENV["USE_RM_APP"] == "true"
end