如何为每个邮件程序设置 default_url_options?
How can I set default_url_options per mailer?
在 Rails 5 中,由于某些业务原因,我们有两个邮件程序。
我们称它们为 FooMailer
和 BarMailer
。
业务需求是分别设置default_url_options
:
- 对于
FooMailer
,它们应该是{ host: "wut.example.com" }
- 对于
BarMailer
,它们应该是{ host: "blah.example.com" }
我该怎么做?
全球所有邮寄者:
在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
在 Rails 5 中,由于某些业务原因,我们有两个邮件程序。
我们称它们为 FooMailer
和 BarMailer
。
业务需求是分别设置default_url_options
:
- 对于
FooMailer
,它们应该是{ host: "wut.example.com" }
- 对于
BarMailer
,它们应该是{ host: "blah.example.com" }
我该怎么做?
全球所有邮寄者:
在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