Rub*_*ils 5 ruby ruby-on-rails actionmailer ruby-on-rails-3 ruby-on-rails-4
我想知道在Mailers中设置实例变量的一种干净常规方法是什么?目前,我已经在中继承了的任何邮件程序中重新定义了initialize方法,Mailer并在需要时覆盖了某些实例变量Mailer。
class Mailer < ActionMailer::Base
attr_reader :ivar
def initialize
super
@ivar = :blah
...
end
end
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎很奇怪,因为这new是邮递员的私人方法。例如,如果要尝试在rails控制台中检索它们,则需要执行以下操作:
mailer = Mailer.send(:new)
mailer.ivar
Run Code Online (Sandbox Code Playgroud)
我还考虑过将它们添加到default哈希中,如下所示:
class Mailer < ActionMailer::Base
default ivar: :blah,
...
end
Run Code Online (Sandbox Code Playgroud)
唯一的问题是我需要创建这样的方法来检索ivars:
def default_getter(ivar)
self.class.default[ivar]
end
Run Code Online (Sandbox Code Playgroud)
两种方式对我来说似乎都不是很干净。我考虑过使用类变量,但是我想知道是否有人可以建议一种更清洁的方法。谢谢。
只是有点晚了...
您可以使用 before_action 回调
http://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-callbacks
| 归档时间: |
|
| 查看次数: |
2005 次 |
| 最近记录: |