0

我正在使用 postgresql 设计将电子邮件存储在带有小写字母的 db 中:config.case_insensitive_keys = [ :email ]

但是当我使用大写的电子邮件登录时 - 我收到电子邮件错误的错误消息。我为此找到了解决方案,但这有1个麻烦:

def self.find_for_authentication(conditions = {})
    # Allow to log in with case insensitive email
    conditions[:email].downcase!
end

1) 当我尝试使用错误的大写电子邮件登录时,我收到了错误,并且我的电子邮件使用了小写。(使用 AAA@bbb.CCC 登录,得到 aaa@bbb.ccc,但我需要显示 AAA@bbb.CCC)。我怎样才能改变这种行为?

4

2 回答 2

0

我不确定我是否理解您,但您应该能够访问您提供的原始电子邮件

条件[:电子邮件]

或者一旦登录,您可以通过 self.email 访问登录用户的电子邮件。

让我知道这是否有帮助

于 2013-02-12T13:18:20.807 回答
0

解决方案非常简单。您需要的只是在登录时复制参数哈希并在此哈希中更改电子邮件,但是当用户遇到异常时 - 我们只返回输入参数的原始哈希

def self.find_for_authentication(conditions = {})
  # Allow to log in with case insensitive email
  new_hash = conditions.dup
  new_hash[:email] = conditions[:email].downcase
  where(new_hash).first
end
于 2013-02-14T08:51:47.813 回答