Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 检查nil给出错误_Ruby On Rails_Ruby_Devise - Fatal编程技术网

Ruby on rails 检查nil给出错误

Ruby on rails 检查nil给出错误,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,我的控制器中有一行: user = User.any_of({:user_name => login}, {:email => login}) if user.nil? # ... elsif user.legacy_password.nil? 这就产生了这个错误: undefined method `legacy_password' for []:Array 为什么会发生这种情况?用户对象应该是nil。至少调试器是这么说的。我假设您的任何方法都返回一个结果数组,而不是单

我的控制器中有一行:

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

if user.nil?
  # ...
elsif user.legacy_password.nil? 
这就产生了这个错误:

undefined method `legacy_password' for []:Array

为什么会发生这种情况?用户对象应该是
nil
。至少调试器是这么说的。

我假设您的
任何
方法都返回一个结果数组,而不是单个结果。您可能需要将
.first
添加到它的末尾,这将为您提供一个用户记录,或者
nil
如果
中的任何一个返回空数组

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

我假设您的
任何
方法返回一个结果数组,而不是单个结果。您可能需要将
.first
添加到它的末尾,这将为您提供一个用户记录,或者
nil
如果
中的任何一个返回空数组

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

看起来您正在使用mongoid(
#任何
)并返回一个数组


该错误是因为您正在对数组调用
旧密码,但我假设它是在用户模型上定义的。

看起来您正在使用mongoid(
#任何
)并且它正在返回一个数组


错误是因为您正在数组上调用
legacy\u password
,但我假设它是在用户模型上定义的。

@AndrewMarshall您的意思是什么?抱歉,我对Ruby和Desive有点陌生:)好吧,你有变量
user
,你定义它的代码是什么?@AndrewMarshall我明白了,上面有一行:user=user。任何({:user\u name=>login},{:email=>login})你的假设都没有意义。您的逻辑是“这是nil吗?”运行时说“否”,然后您说“好的,在它上面调用
legacy\u password
”,运行时说“这个东西,碰巧是一个数组,没有名为
legacy\u password
”的方法。您的
nil?
调用与您的错误无关。@AndrewMarshall您的意思是什么?抱歉,我对Ruby和Desive有点陌生:)好吧,你有变量
user
,你定义它的代码是什么?@AndrewMarshall我明白了,上面有一行:user=user。任何({:user\u name=>login},{:email=>login})你的假设都没有意义。您的逻辑是“这是零吗?”运行时说“否”,然后您说“好的,在上面调用
legacy\u password
”,运行时说“这个东西,碰巧是一个数组,没有名为
legacy\u password
”的方法。您的
nil?
调用与您的错误无关。@DFylan感谢您的帮助!!我需要15个声望点来投票给你,当系统允许时,我会接受答案:)@DFylan谢谢你的帮助!!我需要15个信誉点来投票给你,当系统允许时,我会接受答案:)