如何配置设备接受电子邮件或用户名登录?

时间:2010-09-09 04:05:52

标签: ruby-on-rails devise

开箱即用,devise gem要求提供用户的电子邮件地址,并使用该地址登录(验证)。

此railscast "Customizing Devise"清楚地描述了如何使用用户名代替电子邮件进行身份验证。如何配置设计尝试对两个不同的列进行身份验证,用户名或电子邮件?

2 个答案:

答案 0 :(得分:3)

您只需要定义方法find_for_database_authentication(conditions)。例如,我使用monogid:

  def self.find_for_database_authentication(conditions)
    self.where({ :login => conditions[:login] }).first || self.where({ :email => conditions[:login] }).first
  end

答案 1 :(得分:0)

啊,对不起,我没有足够的谷歌。设计维基上有一个答案:"Log in using login or mail"

此外,这个问题已经在stackoverflow上被询问并回答:"Sign in with username OR email"

还有一个blog discussioon使用了与Rails 2.x兼容的self.find_for_authentication方法。