如何注册设计登录事件?

How to register devise login event?

我正在使用 Devise 和 Omniauth 提供通过 native(devise)、facebook 和 google+

的登录

用户理论上可以连续使用任何方式登录,我想注册最后一种认证方式。对于 Facebook 和 G+,我可以在我的用户 table 的 find_* 方法中记录它,但是 Devise 'native' auth 是一本合上的书。

我能想到的最佳方法是在登录之前更新控制器中的会话变量,然后使用 warden 身份验证回调或子类化会话控制器

如这里:Ruby on Rails Devise code after login

之后直接用授权类型更新用户,但看起来有点乱。

Devise 有一个您可以调用的方法,它将运行在您的用户模型中进行数据库身份验证后,您可以在此处更新属性。

class User < ActiveRecord::Base
...
devise :database_authenticatable, :omniauthable .... 
...
  def after_database_authentication
    update_attribute(:auth_type, 'database')
  end
...
end