在控制器级别覆盖默认的ActionMailer收件人

时间:2013-12-19 15:25:26

标签: ruby-on-rails-4 actionmailer

出于演示目的,我想在控制器级别覆盖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忍者在那里可能会帮助我或指向另一个方向。

0 个答案:

没有答案