Rails和Devise:基于当前域名的自定义mail_sender

时间:2013-08-02 10:08:12

标签: ruby-on-rails devise

我有一个包含多个域的Rails应用程序。在config/initializers/devise.rb内,我设置了mail_sender,如上所示:

config.mailer_sender = Proc.new { request.host.include?('somedomain') ? "noreply@somedomain.com" : "noreply@theotherdomain.com" }

但我无法访问变量request,也无法访问ApplicationController中的任何其他帮助程序。你知道吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

在application_controller.rb

before_filter :site_smtp

def site_smtp
 if request.domain == "blabla.com"
    Devise.setup do |config|
      config.mailer_sender = "custom@blabla.com"
    end    
 end
end

答案 1 :(得分:-1)

我认为您应该在邮件中设置发件人。这意味着您必须为此覆盖设计邮件程序。一个简单的解决方案是使用以下内容(另外我将application_helper的视图助手添加到邮件程序中):

# in config/initializers/devise.rb
config.mailer = "CustomDeviseMailer"

# app/mailers/custom_devise_mailer.rb
class CustomDeviseMailer < Devise::Mailer
helper :application
default from: request.host.include?('somedomain') ? "noreply@somedomain.com" : "noreply@theotherdomain.com" 

希望能帮到你