0

アプリケーションコントローラーのDeviseコールバックにコードを実装しました。まず第一に、これは正しい場所ですか?

私は両方を取得します

after_authentication 

after_set_user

働くために。しかし、私はこのエラーを受け取ります

before_logout

NoMethodError in Devise::SessionsController#destroy
undefined method `update_attribute' for nil:NilClass

面白いのは、エラーメッセージにもかかわらず、データベースレコードが更新されることです。変。

4

1 に答える 1

1

これは少し前のことです。after_authenticationとbefore_logoutを実装すると、複数のレコードが取得されました。これは本当に奇妙なことです。

明確にするために、最後のセッションだけでなく、すべてのセッションにIPなどを保存したかったのです。

これをconfig/initializers/devise.rbに追加することで解決しました。セッションについて保存したいもののコードを追加します。

Warden::Manager.after_authentication do |user,auth,opts|
  #store what ever you want on login
end

Warden::Manager.before_logout do |user,auth,opts|
  # store what ever you want on logout
  # If not in initializer it will generate two records (strange)
end
于 2012-03-20T23:40:41.680 に答える