开箱即用,设计gem 会询问用户的电子邮件地址并使用它来登录(验证)。
这个 railscast,“定制设计”,清楚地描述了如何使用用户名代替电子邮件进行身份验证。如何配置设计以尝试针对两个不同的列(用户名或电子邮件)进行身份验证?
您只需要定义方法 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
啊,对不起,我没有充分谷歌。在设计维基上有一个答案:“使用登录名或邮件登录”
此外,此问题已在此处的 stackoverflow 上提出并回答:“使用用户名或电子邮件登录”
还有一个博客讨论使用了与 Rails 2.x 兼容的 self.find_for_authentication 方法。