2017-04-27 1 views
0

In Rails 5 haben wir aus geschäftlichen Gründen zwei Mailer.Wie kann ich default_url_options pro Mailer einstellen?

Nennen wir sie FooMailer und BarMailer.

Die Geschäftsanforderung ist die default_url_optionsfür jeden von ihnen getrennt einzurichten:

  • Für FooMailer sollten sie { host: "wut.example.com" }
  • Für BarMailer sollten sie { host: "blah.example.com" } sein

Wie kann Ich mach das?

Antwort

2

Für alle global Mailer:

In config/environment/production.rb:

config.action_mailer.default_url_options = { :host => 'http://abc.co.uk' } 

Per Mailer:

Für Rails 5.0.x scheint die default_url_options als Methode auf jeder Mailer Einrichtung zu arbeiten:

class FooMailer < ApplicationMailer 
    ... 
    def default_url_options 
    { host: "wut.example.com" } 
    end 
    ... 
end 

und

class BarMailer < ApplicationMailer 
    ... 
    def default_url_options 
    { host: "blah.example.com" } 
    end 
    ... 
end 

Ein Tipp: wenn Sie wollen immer noch die Optionen in der umgebungsspezifischen Dateien einzurichten (wie Sie mit globalen Standardeinstellungen tun) können Sie die Rails.applicaiton.config.x dafür verwenden können:

class FooMailer < ApplicationMailer 
    ... 
    def default_url_options 
    Rails.application.config.x.default_foo_mailer_url_options || 
     raise('No x.default_foo_mailer_url_options config found') 
    end 
    ... 
end 

und dann in config/environments/*.rb können Sie es wie folgt einrichten:

Rails.application.configure do 
    ... 
    config.x.default_foo_mailer_url_options = { 
    host: "wut.example.com" 
    } 
    ... 
end 
+0

Dies wird nicht einrichten ** pro Mailer **, nur global. –

+0

@IvanKolmychek in production.rb funktioniert für alle Mailer – puneet18

+0

wenn Sie wollen, fühlen Sie sich frei, einfach Zeug aus meiner Antwort zu kopieren, fügen Sie das Zeug über globale Setup oben und ich werde es akzeptieren und meins entfernen. –

Verwandte Themen