2011-11-11 72 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在其他帖子中提出的建議,以確保線程安全,如果這是個問題。 –

相關問題