从db中获取用户时,我应该如何检查null?

时间:2011-03-13 23:17:26

标签: ruby-on-rails ruby

如果我尝试从db中获取记录,如:

@user = User.find_by_user_name("blah")

如何检查值是否为空?即记录被发现了吗?

我应该使用and还是&&,因为它们似乎有所不同?

if @user and @user.age > 0
  ....
end

5 个答案:

答案 0 :(得分:1)

if @user
  # not nil
else
  # nil
end

应该足以检查该值是否为零。

和&&和和'和'是&&优先于'和'。见here

答案 1 :(得分:0)

如果值为null,则会引发异常:

@user = User.find_by_user_name!("blah")

答案 2 :(得分:0)

如果没有记录,@ user将为nil,因此if检查将起作用。

&&和并且是优先权。 &安培;&安培;有更高的优先权。

答案 3 :(得分:0)

如果没有找到,@ user将为nil,如建议的那样。你当然可以明确地检查nil,当然:

@user.nil?
@user === nil

nil将伪造if语句,如false。有关差异,请参阅NilClassFalseClass

答案 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
相关问题