2011-11-11 23 views
1

我意识到when thinking about the user, password, and site variables in ActiveResource::Base,他们可以修改一个请求,并会保持修改下一个请求。这似乎是不受欢迎的行为,并可能是一个普遍的问题,因为它适用于所有类变量/属性的使用。Rails是否有办法在请求之间重置类变量?

是否Rails提供了一种机制来清除对类级别状态的更改(例如重置为默认值),以便每个请求都以原始状态启动?

如果没有,是否可以添加一个初始化类变量的方法,这将在每个请求的开始时重新应用?这可以与线程安全存储相结合,使类变量的问题更少。可能的修改class_attribute

更新:

正如我在the linked question above描述的,把这个给我注意具体情况是事实,我是基于每个用户的基础上设定的ActiveResource :: Base.user和密码。如果我没有重置它们,那就意味着代表一个用户的REST请求将在后续页面加载时使用另一个用户的凭证。

回答

0

出于好奇,你能给出一个具体的例子说明你为什么要这么做吗?从表面上看,这听起来像你要求改变一个变量,所以Rails正在做你所要求的。

至于答案,有几个选项:

  • 有变量没有自动“切换回默认”的行为,没有。
  • 您可以手动在您想要每个控制器动作结束重置值这样的事情发生
  • 你可以写一个模块,这是否(把它称为“acts_as_resettable”?),然后包括该模块在需要此功能的课程
+0

我更新了该帖子以给出具体示例。 –

+0

看起来像扩展class_attribute将是一个很好的方法来做到这一点,因为它已经提供了我想要的行为(可继承的类级属性)。它可以传递一个默认值,它可以保存并在每个请求上重置,并且可以使用Thread.current作为@KandadaBoggu在其他帖子中提出的建议,以确保线程安全,如果这是个问题。 –

相关问题