Rails有办法在请求之间重置类变量吗?

时间:2011-11-11 21:41:55

标签: ruby-on-rails initialization lifecycle class-variables

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

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

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

更新

正如我在the linked question above中所描述的那样,引起我注意的具体案例是我在每个用户的基础上设置了ActiveResource :: Base.user和密码。如果我没有重置它们,那就意味着代表一个用户的REST请求将在后续页面加载时使用另一个用户的凭据。

1 个答案:

答案 0 :(得分:0)

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

就答案而言,有几个选择:

  • 没有自动"切换回默认值"变量的行为,没有。
  • 您可以手动重置每个控制器操作结束时的值
  • 您可以编写一个执行此操作的模块(称为" acts_as_resettable"?),然后将该模块包含在您希望此功能的类中