具体是 devise wiki 里面的一个 How to https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address
这个教程里面,直接就给 User Model 添加了 username 但是并没有额外的 validation 和处理
接下来,在下面重写 find_for_database_authentication method 时 有
def self.find_first_by_auth_conditions(warden_conditions)
conditions = warden_conditions.dup
if login = conditions.delete(:login)
where(conditions).where(["lower(username) = :value OR lower(email) = :value", { :value => login.downcase }]).first
else
where(conditions).first
end
end
就是这一行有疑惑,where(conditions).where(["lower(username) = :value OR lower(email) = :value", { :value => login.downcase }]).first
lower(username) 应该是把 username 也给小写了。但是之前并没有类似|user| user.username = username.downcase 这种保存
也就是实际上漏掉了“要把 username 也小写化”这一步?
另外……请问怎么发成 code 格式,我尝试用'但是没效果……