7

メーラーでインスタンス変数を設定するためのクリーンで従来の方法は何ですか? 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

唯一の問題は、ivar を取得するために次のようなメソッドを作成する必要があることです。

def default_getter(ivar)
  self.class.default[ivar]
end

どちらの方法も私には特にきれいに見えません。クラス変数の使用を検討しましたが、誰かがよりクリーンな方法を提案できるかどうか疑問に思っています。ありがとう。

4

1 に答える 1