如何从ActionMailer类中访问会话?

时间:2009-09-23 18:12:26

标签: ruby-on-rails session actionmailer

我有一个应用程序可以从2个不同的URL访问,并且外观/行为略有不同,具体取决于您用来访问它的URL。我可以通过在会话对象中存储一个值并根据它做出一些决定来做到这一点,例如从哪个路径视图加载。

这种方法似乎可以工作,直到我需要在电子邮件中发送不同的URL。在从ActionMailer继承的类中,我需要根据会话变量的值设置default_url_options [:host]。当我从邮件程序中的任何地方调用会话时,Rails会抛出以下错误:

  

ApplicationMailer的未定义局部变量或方法`session':Class

处理此问题的方法不太理想,就是将会话变量传递给我的邮件程序调用。我宁愿不这样做,因为它看起来不太干,并且需要更改我的大部分代码。

1 个答案:

答案 0 :(得分:3)

无论你是否可以将会话的引用塞进邮件程序中,我认为你已经找到了正确的解决方案。由于几个原因,传递你想要使用的上下文会更好。

  1. 邮件可能不应该首先了解会话。
  2. 假设有一天你必须发送大量邮件,并批量处理它。你将回到现在的位置 - 不得不传递你的背景。