ENV阵列/用户会话

时间:2011-07-19 23:40:54

标签: ruby-on-rails

我已经提供了一些示例代码,用于存储与ENV数组中当前用户相关的数据:

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

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

我认为这不适合放置信息吗?相反它应该在用户会话中?

1 个答案:

答案 0 :(得分:1)

我同意。如果要对ENV进行修改,则应该在脚本执行的最开始。由于这是针对每个请求而更改的数据,因此它不应该是全局的。它不仅奇怪,如果您的应用程序最终在一个堆栈中,一次运行多个请求并且在请求使用完毕之前此值发生更改,则可能会导致问题。

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

当然,这假设我们正在讨论控制器代码。如果是这样,你去,但我仍然想要更多的背景,以确保我们不谈论,例如,Rack中间件或更复杂的东西。