次のイベントを区別できるように、Deviseに接続する簡単な方法は何ですか:1。サインアップ、2。サインイン
このためにDeviseに接続する方法を知る必要があります。探しているものがまだ見つかりません。クリーンで最小限のコントローラーレベルの実装です。これが私が試したいくつかのオプションです:
カスタムコントローラーを作成します(https://github.com/plataformatec/devise#configuring-controllersで説明されています)。作業が多く、もろく、重複しているので、これは使いたくありません。
モデルコールバックを使用します。私はむしろこの道をたどりたくない。これをコントローラーレベルのコードにします。つまり、少なくとも、コントローラー環境にアクセスしたいということです。私の考えでは、これはコントローラーの責任です。モデルを扱わなくても、これをテストできるようにしたいと思います。
sign_in
アプリのApplicationControllerでオーバーライドします。問題?このアプローチでは、サインアップとサインインを区別できません。(これが正確でない場合は修正してください)Deviseのregistrations_controller.rbとsessions_controller.rbをスキミングした後、これを言います。どちらのcreate
メソッドも。を呼び出しますsign_in
。
私の特定のアプリケーションは次のとおりです。(a)管理者に電子メール通知を送信し、(b)バックエンド分析サービスにAPI呼び出しを行います。どちらもモデルの責任ではないことに注意してください。これらはコントローラーレベル(アプリケーションレベル)の責任です。
アップデート2012-10-16:Deviseプロジェクトがsign_upの新しいフックを追加できるかどうか尋ねています:https ://github.com/plataformatec/devise/issues/2104
更新2012-10-16:フックしやすいため、この質問から「サインアウト」を削除しました。