2011-11-10 79 views
1

我有两个邮件程序:如何共享ActionMailers之间的方法

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最近从抽象控制器派生出来的那样)。

那么,我可以在哪里声明check_something ?,以及如何使它可供我的邮件程序访问?

回答

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 
+0

我也看不到任何其他方式。这样做会很好。谢谢。 – Joerg