奇怪的Devise / Warden挂钩错误/行为

时间:2011-10-10 22:33:18

标签: ruby-on-rails devise warden

我在应用程序控制器中的Devise call backs中实现了代码。首先,这是正确的地方吗?

我得到了

after_authentication 

after_set_user

上班。但是我得到了这个错误

before_logout

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

有趣的是数据库记录更新,显示错误消息。奇怪。

1 个答案:

答案 0 :(得分:0)

这是一段时间了。当我实现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