1

次のイベントを区別できるように、Deviseに接続する簡単な方法は何ですか:1。サインアップ、2。サインイン

このためにDeviseに接続する方法を知る必要があります。探しているものがまだ見つかりません。クリーンで最小限のコントローラーレベルの実装です。これが私が試したいくつかのオプションです:

  1. カスタムコントローラーを作成します(https://github.com/plataformatec/devise#configuring-controllersで説明されています)。作業が多く、もろく、重複しているので、これは使いたくありません。

  2. モデルコールバックを使用します。私はむしろこの道をたどりたくない。これをコントローラーレベルのコードにします。つまり、少なくとも、コントローラー環境にアクセスしたいということです。私の考えでは、これはコントローラーの責任です。モデルを扱わなくても、これをテストできるようにしたいと思います。

  3. 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:フックしやすいため、この質問から「サインアウト」を削除しました。

4

1 に答える 1

0

https://github.com/pootsbookおよびhttps://github.com/rubynortheastからのプルリクエストのおかげで、Deviseのマスターブランチはsign_upとsign_outの別々のフックをサポートするようになりました。ですから、次のリリース、おそらく2.1.3に入ると思います。

見る:

于 2012-11-05T07:42:08.197 に答える