我想知道在Mailer中設置實例變量的乾淨和常規方式是什麼?目前,我已在Mailer
中重新定義initialize
方法,並隨後在從Mailer
繼承的任何郵件程序中需要時覆蓋某些實例變量。在Action Mailer中設置實例變量?
class Mailer < ActionMailer::Base
attr_reader :ivar
def initialize
super
@ivar = :blah
...
end
end
這隻對我而言很奇怪,因爲new
是郵寄者的私人方法。例如,如果我嘗試在軌控制檯檢索這些,我需要做到以下幾點:
mailer = Mailer.send(:new)
mailer.ivar
我也曾考慮將它們添加到default
哈希像這樣:
class Mailer < ActionMailer::Base
default ivar: :blah,
...
end
唯一的問題是,我需要建立一個像這樣的方法來檢索實例變量:
def default_getter(ivar)
self.class.default[ivar]
end
無論方式似乎特別乾淨給我。我考慮過使用類變量,但我想知道是否有人可以提出一個更清晰的方法。謝謝。
無論哪種方式似乎乾淨給我,FWIW。 – zeantsoi
啊,所以如果我運行這個函數,實際上會產生一個錯誤,因爲我忽略了initialize上的參數:(method_name,* args)。 – RubeOnRails
如果有人提供了更清晰的答案,我會保持開放狀態。我最終使用'initialize',但是我必須在IVAR賦值之後調用'super',否則Ivars不會被賦值。 – RubeOnRails