7

我想知道在 Mailers 中设置实例变量的干净且传统的方法是什么?目前,我已经initializeMailer继承自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

这两种方式对我来说似乎都不是特别干净。我考虑过使用类变量,但我想知道是否有人可以建议一种更清洁的方法。谢谢。

4

1 回答 1

6

只是有点晚了...

您可以使用 before_action 回调

http://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-callbacks

于 2014-09-10T23:55:03.160 回答