21

私はレールに比較的慣れていません。Devise をセットアップしましたが、ユーザーがサインインした後にコールバック コードを実行したいと考えています。

Warden wiki pageを見ると、「after_set_user」コールバックを使用してこのロジックを実行できます。次に例を示します。

Warden::Manager.after_set_user do |user, auth, opts|
  unless user.active?
    auth.logout
    throw(:warden, :message => "User not active")
  end
end

とはいえ、このようなものをどこに保管すればよいかわかりません。私の最初の考えは、config/initializers/devise.rb に置くことができるということです。あれは正しいですか?基本的にコントローラ コードを config ディレクトリに配置するのは適切ではありません。

4

1 に答える 1

20

アプリケーションの起動時に Warden フックが必要になるため、config/initializers/devise.rb にある Devise の初期化子が適切な候補です。

ただし、達成したい動作は、この Devise 機能を使用することでより適切に達成されます。

https://github.com/plataformatec/devise/wiki/How-To:-Customize-user-account-status-validation-when-logging-in

于 2011-12-02T12:31:33.760 に答える