问题描述
|
嘿,当我偶然发现这段代码时,我遵循的是Michael Hartl的教程。
有没有人知道三元运算符使用的“用户”是什么?
这是代码:
def self.authenticate(email,submitted_password)
user = find_by_email(email)
user && user.has_password?(submitted_password) ? user : nil
end
解决方法
&&
是逻辑and
,只是它的优先级高于and
。因此,该语句仅说明如果用户不是nil并且用户具有该密码,则返回user,否则返回nil。
在Ruby中,逻辑的第二部分,如果第一部分为false,则不执行。因此,这里的目的是确保在调用has_password?
之前有一个用户,从而防止在nil
上调用has_password?
的错误。另一种方法是使用try
,例如:
user.try(:has_password?,submitted_password) ? user : nil
, 它仅在应用方法has_password?
之前检查user
是否具有任何值。