我想在我的控制器comparte兩個日期這裏是代碼比較了零兩個日期未定義的方法`>」:NilClass
if @user.payment.count == 0
some action
elsif @user.payment.last.active_until.to_date > Time.now.to_date
some action
elsif @user.payment.last.active_until.nil?
some action
end
當我試圖評估該
elsif @user.payment.last.active_until.to_date > Time.now.to_date
我得到這個錯誤:
undefined method `>' for nil:NilClass
但是我有一個觀點在同一行顯示一些其他信息和它的偉大工程。
我不明白爲什麼在控制器不起作用。
在此先感謝您的幫助。
UPDATE
這裏是我的控制檯輸出
1.9.3p286 :002 > u.payment.last.active_until
Payment Load (0.2ms) SELECT "payments".* FROM "payments" WHERE "payments"."user_id" = 10 ORDER BY "payments"."id" DESC LIMIT 1
=> Thu, 24 Jan 2013
如果我比較這在我的控制檯我得到這個:
1.9.3p286 :003 > u.payment.last.active_until.to_date > Time.now.to_date
Payment Load (0.3ms) SELECT "payments".* FROM "payments" WHERE "payments"."user_id" = 10 ORDER BY "payments"."id" DESC LIMIT 1
=> true
更新2
在我的控制器相同的,如果是真實的,在控制檯是假的,我認爲這裏是
1.9.3p286 :010 > u.payment.last.active_until.nil?
Payment Load (0.3ms) SELECT "payments".* FROM "payments" WHERE "payments"."user_id" = 10 ORDER BY "payments"."id" DESC LIMIT 1
=> false
您是否檢查@ user.payment.last.active_until是否有值? – pablomarti
是的,它有..有價值active_until:「2013-01-24」 – Jean
是否有您的付款表中沒有任何active_until爲零?那就是:'Payment.where(active_until:nil).all'是你在@user中使用的用戶的那個控制檯輸出嗎? –