Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 环境阵列/用户会话_Ruby On Rails - Fatal编程技术网

Ruby on rails 环境阵列/用户会话

Ruby on rails 环境阵列/用户会话,ruby-on-rails,Ruby On Rails,我收到了一些示例代码,这些代码将当前用户的相关数据存储在ENV数组中: ENV['token']=request.ENV['omniauth.auth']['credentials']['token'] 我是rails新手,据我所知,这是传递给Ruby/rails的环境变量数组 我想这不是一个放置信息的合适地方?相反,它应该在用户会话中?我同意。如果要修改ENV,则应在脚本执行的最开始处进行修改。因为这是每个请求都会更改的数据,所以它不应该是全局的。这不仅奇怪,如果你的应用程序在一个堆栈中一次运

我收到了一些示例代码,这些代码将当前用户的相关数据存储在ENV数组中:

ENV['token']=request.ENV['omniauth.auth']['credentials']['token']

我是rails新手,据我所知,这是传递给Ruby/rails的环境变量数组


我想这不是一个放置信息的合适地方?相反,它应该在用户会话中?

我同意。如果要修改
ENV
,则应在脚本执行的最开始处进行修改。因为这是每个请求都会更改的数据,所以它不应该是全局的。这不仅奇怪,如果你的应用程序在一个堆栈中一次运行多个请求,并且该值在一个请求完成使用之前更改,那么它可能会导致问题

因为我们使用的是
请求
,所以我打赌我们是在控制器的上下文中。因此,我建议将其设置为实例变量
@token
,该变量可在控制器和视图中的任何位置访问,但与此请求相关。这给了它一个很大的范围,但不超过您需要的范围


当然,这假设我们讨论的是控制器代码。如果是这样的话,那就好了,但我仍然需要更多的上下文来确保我们没有讨论机架中间件或其他更复杂的东西。

无法准确确定您所指的示例代码(从何处)。不,它是控制器代码。可爱的副作用是,我可以关闭浏览器,只要服务器保持运行,我就可以作为第一个用户登录。我要把这个样品记为“不合格”