2017-07-04 75 views
0

我在我的模型中有兩個電子郵件字段:電子郵件和:representative_email我想發送確認說明電子郵件:representative_email(如果存在或不存在)而不是:電子郵件我該怎麼做有效率的。我仍然想用我的電子郵件字段登錄。設計其他電子郵件的確認說明

回答

0

我需要郵件

class DeviseCustomMailer < Devise::Mailer 
    helper :application # gives access to all helpers defined within `application_helper`. 
    include Devise::Controllers::UrlHelpers # Optional. eg. `confirmation_url` 
    default template_path: 'devise/mailer' 
    def headers_for(action, opts) 
    headers = { 
     subject: subject_for(action), 
     to: resource.notification_email_for(action), #I changed this line 
     from: mailer_sender(devise_mapping), 
     reply_to: mailer_reply_to(devise_mapping), 
     template_path: template_paths, 
     template_name: action 
    }.merge(opts) 

    @email = headers[:to] 
    headers 
    end 
end 

內,在我的user.rb

def notification_email_for(action) 
    (self.company? && self.authorised_representative && action == :confirmation_instructions) ? self.representative_email : self.email 
end 

和我的配置/初始化/ devise.rb

config.mailer = 'DeviseCustomMailer' 
覆蓋headers_for方法色器件

就是這樣

1

您可以創建一個自定義郵件程序see how to do that,並在其中設置要發送的電子郵件。 這是我能想到的最乾淨的解決方案,未來如果您想改變任何東西,只能在一個地方改變它。

+0

yes I需要編寫自定義郵件,但在我的答案中有更多描述。 –

+0

真棒,感謝分享,其他人會從中受益。 –