我有这条线在我的控制器:检查零给出错误
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
。至少这是调试器说的。
我假设你的any_of
方法返回结果数组,而不是单个结果。您可能需要在其末尾添加.first
,这会给您一个用户记录,或者如果any_of
返回一个空数组,则会返回nil
。
user = User.any_of({:user_name => login},{:email => login}).first
@DFylan谢谢你的帮助!我需要15个声望点来投票给你,并在系统允许我时接受答案:) – Awesomeness 2012-04-18 16:49:21
看起来你使用的是mongoid(#any_of
),它返回一个数组。
错误是因为您在数组上调用legacy_password
,但我认为它是在User模型上定义的。
你是如何设置'user'的? – 2012-04-18 16:40:40
@AndrewMarshall你是什么意思?对不起,我对Ruby和Devise有点新鲜:) – Awesomeness 2012-04-18 16:42:54
那么,你有变量'user',你定义它的代码是什么? – 2012-04-18 16:43:51