5

私のアプリケーションはDeviseを使用しており、確認メールを適切に送信しており、ユーザーが確認リンクをクリックした後も適切に確認しています. また、ユーザーが確認された後に 2 通目のメールを送信したいと思います。

確認を遅らせる方法、または 2 段階の確認については多くのアドバイスがありますが、探しているもの (見つけることができるもの) については何もありません。

Devise::Module::Confirmable のドキュメントには、使用するメソッドが confirm! であることが示されていますが、これを行う方法がわかりません。何か案は?

4

1 に答える 1

4

Rails の工夫: after_confirmation

ユーザーが確認されたかどうかを確認する after_save コールバックを定義するだけで、確認された場合はメールが送信されます。

いくつかの CPU サイクルを節約したい場合は、Devise 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
于 2012-06-04T08:51:18.487 に答える