如何以干燥的方式设置default_url_options?

时间:2015-12-30 19:34:46

标签: ruby-on-rails ruby ruby-on-rails-4

我想在初始化程序中设置config.action_mailer.default_url_options上的一些选项。但是,问题是此值可能是nil,或者它可能是带有其他选项的哈希值。

使用推荐方法时的问题示例:

# config/application.rb
config.action_mailer.default_url_options = {protocol: 'https'}

# config/environments/production.rb
config.action_mailer.default_url_options = {host: "example.com"}

# config/environments/development.rb
config.action_mailer.default_url_options = {host: "staging.example.com"}

现在default_url_options没有ssl: true设置。

据我所知,唯一能够兼顾两种可能性的方法是将其设置为空哈希,如果它为空,则添加到哈希中,如下所示:

config.action_mailer.default_url_options ||= {}
config.action_mailer.default_url_options[:host] = 'example.com'

这不是干的,必须在你希望设置此选项的任何地方进行,除非你绝对确定在之前没有设置任何选项并且没人会尝试设置其中一个选项将来在一个文件之前加载。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以在env文件中执行某些操作。

config.action_mailer.default_url_options.merge(host: "staging.example.com")