2009-09-23 66 views
4

我有一個應用程序可以從2個不同的URL訪問,看起來/行爲略有不同,取決於您使用哪個URL訪問它。我可以通過在會話對象中存儲一個值並基於某些決定來做到這一點,例如從哪個路徑視圖加載。如何從ActionMailer類中訪問會話?

這種方式看起來像它會工作,直到我需要在電子郵件中發送不同的URL。在繼承自ActionMailer的類中,我需要根據會話變量的值設置default_url_options [:host]。導軌引發以下錯誤,當我呼叫會話從任何地方的郵寄包裝內:

未定義局部變量或方法`會話」的ApplicationMailer:類

的低於期望的方式來處理,這是將會話變量傳遞給我的郵件程序調用。我寧願不這樣做,因爲它看起來不太乾,並且需要更改我的大部分代碼。

回答

3

無論你是否可以將會話引用到郵件程序中,我認爲你已經找到了正確的解決方案。傳遞你想使用的上下文會更好,原因有兩個。

  1. 郵件大概不應該在第一時間知道會話。
  2. 假設有一天你必須發送大量郵件並對其進行批處理。你會馬上回到你現在的位置 - 必須通過你的背景。