我想知道在Mailers中设置实例变量的干净和传统方法是什么?目前,我已在initialize
中重新定义Mailer
方法,并在需要时从任何继承自Mailer
的邮件程序中覆盖某些实例变量。
class Mailer < ActionMailer::Base
attr_reader :ivar
def initialize
super
@ivar = :blah
...
end
end
这对我来说似乎很奇怪,因为new
是邮件的私有方法。例如,如果我尝试在rails控制台中检索这些,我需要执行以下操作:
mailer = Mailer.send(:new)
mailer.ivar
我还考虑将它们添加到default
哈希中,如下所示:
class Mailer < ActionMailer::Base
default ivar: :blah,
...
end
唯一的问题是我需要创建一个这样的方法来检索ivars:
def default_getter(ivar)
self.class.default[ivar]
end
这两种方式对我来说都不是特别干净。我考虑过使用类变量,但我想知道是否有人可以提出更清洁的方法。感谢。
答案 0 :(得分:3)
有点晚了......
您可以使用before_action回调
http://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-callbacks