0

デバイスを使用して認証するレール 3.2 アプリに取り組んでいます。

アプリケーション (主に統計) に関連しない目標のために、ユーザー テーブルの一部のフィールド (名前、電子メール、およびその他のフィールド) のみを保持し、パスワードを保持しない別のユーザー テーブル (alt_users と呼びましょう) を作成する必要があります。ダイジェストやその他の機密情報。また、ユーザーが自分のアカウントを変更または削除した場合、このレコードを変更する必要はありません。

私の考えでは、ユーザーがサインアップすると、devise がジョブを実行する前に、選択されたフィールドが alt_users テーブルに挿入されます。

これを実現するためにデバイスの動作をオーバーライドする正しい方法は何ですか?

4

1 に答える 1

2

できることは、Devise の RegistrationsController を次の方法でオーバーライドすることです。

あなたの routes.rb で:

devise_for :users, :controllers => {:registrations => "registrations"}

次にファイル app/controllers/registrations_controller.rb を作成します:

# app/controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController

  def create
    # add your data to alt_users here
    super
  end

end 

余談ですが、Devise のコントローラーのオーバーライドを避けることができれば、それが最善です。before_createUser モデルのコールバックのような他のオプションを考えてみてください。

于 2012-11-19T13:52:03.960 に答える