如果我尝试从db中获取记录,如:
@user = User.find_by_user_name("blah")
如何检查值是否为空?即记录被发现了吗?
我应该使用and
还是&&
,因为它们似乎有所不同?
if @user and @user.age > 0
....
end
答案 0 :(得分:1)
答案 1 :(得分:0)
如果值为null,则会引发异常:
@user = User.find_by_user_name!("blah")
答案 2 :(得分:0)
如果没有记录,@ user将为nil,因此if检查将起作用。
&&和并且是优先权。 &安培;&安培;有更高的优先权。
答案 3 :(得分:0)
@user.nil?
@user === nil
nil将伪造if语句,如false。有关差异,请参阅NilClass和FalseClass。
答案 4 :(得分:0)
如其他人所述,如果找不到记录,查找程序将返回nil
,因此您有几个选项,包括您在问题中提到的那个以及此处的其他答案。
如果@user = User.find_by_user_name("blah")
评估为nil
,如果找不到用户,我个人更喜欢以下Ruby习语:
if @user = User.find_by_user_name("blah")
# do stuff with @user
else
# not found
end