我的控制器中有这一行:
user = User.any_of({:user_name => login}, {:email => login})
if user.nil?
# ...
elsif user.legacy_password.nil?
它会产生此错误:
undefined method `legacy_password' for []:Array
为什么会这样?用户对象应该是nil
。至少这是调试器所说的。
答案 0 :(得分:3)
我假设您的any_of
方法返回结果数组,而不是单个结果。您可能希望在其末尾添加.first
,这将为您提供用户记录,如果nil
返回空数组,则为any_of
。
user = User.any_of({:user_name => login},{:email => login}).first
答案 1 :(得分:1)
看起来你正在使用mongoid(#any_of
)并且它正在返回一个数组。
错误是因为您在数组上调用legacy_password
,但我认为它是在用户模型上定义的。