我收到一个错误NameError (undefined local variable or method "current_user" for #<APIRouter:0x007ffd54a81f98>):
当我尝试在 a 中使用 current_user 时matches?约束。我希望将某些虚拟用户路由到一组控制器,将其他用户路由到另一组控制器。但是,当我尝试使用 current_user 时,出现错误。
我的匹配约束是在 APIRouter 类中定义的:
class APIRouter
def matches? request
@use_rm_app = ENV["USE_RM_APP"] == "true" || (current_user && current_user.is_test)
end
end
关于如何在比赛中使用当前用户有什么想法吗?约束定义在导轨导轨.
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 解决了。
current_user
仅在您的控制器和视图中可用。有不止一种方法可以实现您想要的效果,将其作为参数提供给您的方法更容易。
EDIT
if current_user
如果可以在路由器中访问,您可以通过执行以下操作将其传递给约束类constraints: APIRouter.new(current_user)
。然后你需要定义APIRouter#initialize
并将 current_user 存储在您可以使用的实例变量中matches?
.
EDIT 2
我刚刚记得设备允许您在路由器中执行此操作:
authenticated :user do
root :to => "main#dashboard"
end
我不知道如何确保user.is_test
though.
EDIT 3
最后一次尝试。request.env["warden"].user(:user)
如果经过身份验证,应该给您一个用户。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)