我想知道在 Mailers 中设置实例变量的简洁且传统的方法是什么?目前,我已经在 Mailer
中重新定义了 initialize
方法,随后在任何继承自 Mailer
的邮件程序中需要时覆盖某些实例变量。
class Mailer < ActionMailer::Base
attr_reader :ivar
def initialize
super
@ivar = :blah
...
end
end
这对我来说似乎很奇怪,因为 new
是邮件程序的私有(private)方法。例如,如果我要尝试在 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
对我来说,这两种方式似乎都特别干净。我考虑过使用类变量,但我想知道是否有人可以建议一种更简洁的方法。谢谢。
最佳答案
只是晚了一点...
您可以使用 before_action 回调
http://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-callbacks
关于ruby-on-rails - 在 Action Mailer 中设置实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19236674/