コントローラーで2つの日付を比較しようとしています ここにコードがあります
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
私のコントローラがtrueでコンソールがfalseの場合も同じですが、ここに問題があると思います
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