检查零给出错误(Check for nil gives error)

2019-10-16 14:53发布

我在我的控制器这一行:

user = User.any_of({:user_name => login}, {:email => login})

if user.nil?
  # ...
elsif user.legacy_password.nil? 

而且它创建了一个错误:

undefined method `legacy_password' for []:Array

为什么会出现这种情况? 用户对象被认为是nil 。 至少,这是调试器说的话。

Answer 1:

我假设你any_of方法返回结果的数组,而不是一个结果。 你可能要添加.first到它的结束,这将给你无论是用户记录,或nil如果any_of返回一个空数组。

user = User.any_of({:user_name => login},{:email => login}).first


Answer 2:

看起来你正在使用mongoid( #any_of )和它的返回数组。

这个错误是因为你调用legacy_password阵列上,但我相信它是在用户模型中定义。



文章来源: Check for nil gives error