誰かが最後にアプリにログインして保存したときに更新するアプリの小さなアップデーターを書いています。Rails 3.2およびRuby 1.9.3p327にあります
def update_last_seen
if current_account.present?
if (Date.current - 1.day) > current_account.last_login_at
current_account.last_login_at = Date.current
current_account.save
end
end
end
それをアプリケーション コントローラーに貼り付けて、before フィルターで呼び出しました。唯一のことは、時々ゼロの日付があることです。したがって、日付を nil と比較するとエラーが発生します。nil で to_date を呼び出すことはできません。
nil.to_f => 0.0
nil.to_i => 0
nil.to_s => ""
nil.to_date => NoMethodError: undefined method `to_date' for nil:NilClass
"2013/07/26".to_date => Fri, 26 Jul 2013
いわば空白の日付として受け入れるように設定するにはどうすればよいですか。
私はいつでもできる
if current_account.last_login_at.blank? || (Date.current - 1.day) > current_account.last_login_at
そこにない場合はそのように設定しますが、それを行う意味的な方法はありますか?
アップデート:
これは意味がないと思うかもしれません。私が尋ねる理由は、日付に nil を持つエンジンがいくつかあるからです。たとえば、Excel は日付を 2 つの方法で返します"06/12/2013"
。その日付はnil
、Ruby の nil のデフォルトの日付があることを望んでいた日付よりも優れています。ない場合は、コメントできません。申し訳ありません。理由の説明なしに反対票を投じることは、ボタンを押しているだけで何かを助けたり教えたりすることを本当に気にしないことを意味します。私がこの質問で何か間違ったことをした場合、それが意味をなさない場合は、それを修正してみてください。