1

在考虑 ActiveResource::Base 中的用户、密码和站点变量时,我意识到它们可以在一个请求中修改,并且在下一个请求中保持修改。这似乎是不受欢迎的行为,并且可能是一个普遍的问题,因为它适用于类变量/属性的所有使用。

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

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

更新:

正如我在上面的链接问题中所描述的那样,引起我注意的具体情况是我在每个用户的基础上设置 ActiveResource::Base.user 和密码。如果我未能重置它们,这意味着代表一个用户的 REST 请求将在后续页面加载时使用另一个用户的凭据进行。

4

1 回答 1

0

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

至于答案,有几个选择:

  • 变量没有自动“切换回默认值”行为,没有。
  • 您可以在希望发生这种情况的每个控制器操作结束时手动重置值
  • 您可以编写一个执行此操作的模块(称为“acts_as_resettable”?),然后将该模块包含在您想要此功能的类中
于 2011-11-11T22:20:53.497 回答