出于演示目的,我想在控制器级别覆盖Rails 4 ActionMailer收件人。
以下初始化程序可以执行我想要的操作,但是当我想更改mail.to
地址时,我需要重新发送我的代码并重新启动服务器。
# config/initializers/override_mail_recipient.rb
if Rails.env.production?
class OverrideMailRecipient
def self.delivering_email(mail)
mail.to = 'example@domain.com'
end
end
ActionMailer::Base.register_interceptor(OverrideMailRecipient)
end
我想要的是能够访问如下链接:
get '/default_mail_recipient/:email' => 'controller#default_mail_recipient', as: :mail_recipient
然后在控制器中:
def default_mail_recipient
ActionMailer::Base.override_recipient = params[:email]
redirect_to :root, :notice => "Default mail recipient overridden"
end
我怀疑这是可能的,但也许有一个Rails忍者在那里可能会帮助我或指向另一个方向。