如何为每个邮件程序设置 default_url_options?

How can I set default_url_options per mailer?

在 Rails 5 中,由于某些业务原因,我们有两个邮件程序。

我们称它们为 FooMailerBarMailer

业务需求是分别设置default_url_options:

我该怎么做?

全球所有邮寄者:

config/environment/production.rb中:

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

每个邮寄者:

对于 Rails 5.0.x,在每个邮件程序上设置 default_url_options as 方法似乎有效:

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

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