我有這條線在我的控制器:檢查零給出錯誤
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