2011-09-11 26 views
19

私は比較的新しいレールです。 。私は工夫がセットアップされている、そしてユーザーがサインインした後、いくつかのコールバックのコードを実行したいコールバックをレールアプリケーションに配置する必要がありますか?

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ディレクトリに置かれているとは思えません。

+0

は、フィルタ、「after_set_user」のように見える、私の推測では、コントローラです。 – Bnjmn

+0

実際に私はイニシャライザ/ devise.rbに "Warden configuration"という名前のセクションを見つけました。 –

+0

あなたはこのコードをどこに置くのですか?あるいは、それをDeviseイニシャライザのコードスタイルにどういう形で適応させましたか? – dgilperez

答えて

19

アプリケーションの起動時にワーデンフックが必要なので、config/initializers/devise.rbのDeviseのイニシャライザが適しています。

しかし、あなたが達成したい行動が良く、この考案の機能を使用することによって達成されます。

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

+0

リンクは提供されていません。 – dgilperez

関連する問題