如何在ActionMailers之间共享方法

时间:2011-11-10 08:37:56

标签: ruby-on-rails-3.1 actionmailer helpers

我有两个邮件:

class Mailer1 < ActionMailer::Base
  def mail
    if check_something?
    end
  end

  private

  def check_something?
  end
end


class Mailer2 < ActionMailer::Base
  def another_mail
    if check_something?
    end
  end

  private

  def check_something?
  end
end

(我知道我可以为实际的邮件模板提供视图帮助程序,但是如何使它适用于控制器类型的“帮助程序”方法 - 因为ActionMailers最近派生自Abstract Controller。)

那么,我在哪里可以声明check_something ?,我怎样才能让我的两个邮件程序都可以访问它?

1 个答案:

答案 0 :(得分:1)

只需创建一个基类,就像默认使用ApplicationController获取http控制器一样:

class AppMailer < ActionMailer::Base
  protected
  def check_something?
  end
end

class Mailer1 < AppMailer
  def mail
    if check_something?
    end
  end
end


class Mailer2 < AppMailer
  def another_mail
    if check_something?
    end
  end
end