【发布时间】:2014-04-14 14:48:38
【问题描述】:
我很难理解来自 Devise 的这段代码,尽管我已经阅读了文档并进行了一些研究。
def self.find_first_by_auth_conditions(warden_conditions)
conditions = warden_conditions.dup
signin = conditions.delete(:signin)
where(conditions).where(["lower(username) = :value OR lower(email) =
:value", {:value => signin.downcase }]).first
end
请解释上述方法这部分的组成部分:
where(conditions).where(["lower(username) = :value OR lower(email) =
:value", {:value => signin.downcase }]).first
【问题讨论】:
-
根据warden 条件运行的查询的第一个结果加上用户名或电子邮件等于登录值。有什么问题?
-
@DaveNewton:谢谢,你能把它分解成更简单的形式吗?我无法理解它的整体。
-
warden_conditions.dup- 复制守望者条件。然后conditions.delete(:signin)删除登录值。然后找到具有这些条件的第一条记录,并且用户名或电子邮件是 Dave 所说的登录值 -
你可能对
conditions.delete(:signin)返回删除的值感到困惑? -
任何人都可以编写相同的查询。 where(conditions).where(["lower(username) = :value OR lower(email) = :value", { :value => signin.downcase }]).first
标签: ruby-on-rails ruby activerecord devise