2012-06-04 44 views
4

我的應用程序正在使用Devise,並且正在發送確認郵件並在點擊確認鏈接後正確地確認用戶。我還想在用戶確認後發送第二封電子郵件。Rails:Devise:在用戶comfirms註冊後發送郵件

關於如何延遲確認,或兩步確認,但沒有關於我在找什麼(我可以找到),有很多建議。

Devise :: Module :: Confirmable文檔告訴我,要使用的方法是確認!,但我不知道如何執行此操作。有任何想法嗎?

回答

3

Rails Devise: after_confirmation

簡單地定義一個after_save的回調函數檢查,看看如果用戶確認,如果是這樣,發送電子郵件。

如果你想節省一些CPU週期,您可以覆蓋設計ConfirmationsController像這樣的東西:

class ConfirmationsController < Devise::ConfirmationsController 

    def show 
     self.resource = resource_class.confirm_by_token(params[:confirmation_token]) 

     if resource.errors.empty? 
      set_flash_message(:notice, :confirmed) if is_navigational_format? 
      sign_in(resource_name, resource) 

      # Send the user a second email   
      send_post_confirmation_email 

      respond_with_navigational(resource){ redirect_to after_confirmation_path_for(resource_name, resource) } 
     else 
      respond_with_navigational(resource.errors, :status => :unprocessable_entity){ render :new } 
     end 
    end 
end 
+0

我加devise_for:用戶:控制器=> {:註冊=> '註冊', :confirmations =>'confirmations'}給routes.rb。雖然我收到以下錯誤消息:未初始化的常量Devise :: ConfirmationController – EastsideDeveloper

+0

當我研究此問​​題時,我也看到了http://stackoverflow.com/questions/4558463/rails-devise-after-confirmation,但它並不清楚對我來說before_save回調應該去的地方。 – EastsideDeveloper

+0

問題出在我剪切和粘貼的代碼中。它應該是Devise :: ConfirmationsController – EastsideDeveloper

相關問題