我试图在我的控制器中比较两个日期这是代码
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
但是我有相同的行以显示其他信息,并且效果很好。
我不明白为什么在控制器中不起作用。
在此先感谢您的帮助。
更新
这是我的控制台输出
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