2017-04-27 49 views
0

在Rails 5中,出於某種商業原因我們有兩個郵件程序。如何爲每個郵件設置default_url_options?

我們稱之爲FooMailerBarMailer

的業務需求是分別建立default_url_options爲他們每個人:

  • 對於FooMailer他們應該{ host: "wut.example.com" }
  • 對於BarMailer他們應該{ host: "blah.example.com" }

哪有我這樣做?

回答

2

對於全球所有寄件人:

config/environment/production.rb

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

每郵件:

對於Rails的5.0.x中,每個郵件設置了default_url_options的方法似乎工作:

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

and

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

小費:如果你想仍設立在特定環境下的文件,這些選項(如你與全局默認值做),你可以使用該Rails.applicaiton.config.x

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 

和然後在config/environments/*.rb,你可以這樣設置:

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

這不會設置**每個郵件**,只在全局範圍內。 –

+0

@IvanKolmychek in production.rb適用於所有郵件編碼 – puneet18

+0

如果您想要,請隨時從我的答案中完全複製過去的內容,將全局設置的內容添加到頂部,然後我接受它並將其刪除。 –

相關問題