2013-04-02 64 views

回答

0

剛剛看過文檔,並且有一個send_on_create_notification方法可以在模型中重寫。因此,只需要重寫此方法,以便不發送確認電子郵件,而是發送不同的電子郵件。在那封電子郵件中,我只需要確認鏈接。

5
#Devise Mailer 

def confirmation_instructions(record) 
    @resource = record 
    if @resource.pending_reconfirmation? 
     mail(to: @resource.unconfirmed_email, subject: "Confirm new email") do |format| 
     format.html { render ... } 
     end 
    else 
     mail(to: @resource.email, subject: "Confirm new account") do |format| 
     format.html { render .... } 
     end 
    end 
end 
6

您可以在郵包的#confirmation_instructions方法來覆蓋options[:template_name]

class AuthMailer < Devise::Mailer 
    helper :application 
    include Devise::Controllers::UrlHelpers 
    default template_path: 'devise/mailer' 

    def confirmation_instructions(record, token, options={}) 
    # Use different e-mail templates for signup e-mail confirmation and for when a user changes e-mail address. 
    if record.pending_reconfirmation? 
     options[:template_name] = 'reconfirmation_instructions' 
    else 
     options[:template_name] = 'confirmation_instructions' 
    end 

    super 
    end 
end 

而且改變從device.rb

# config.mailer = 'Devise::Mailer' 
config.mailer = 'AuthMailer' 
+0

那是很久以前的事,肯定這條線,但如何既預覽(再確認確認)? – maiconsanson

+0

@maiconsanson你可以在預覽方法中設置模型實例的'unconfirmed_email':'record.update(unconfirmed_email:'[email protected]')'。這將該記錄標記爲pending_confirmation。 – richard

相關問題