我正在为一个应用程序编写一个小更新程序,它将在有人最后一次登录应用程序时更新,然后保存它。它在 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
我将它插入应用程序控制器并使用前置过滤器调用它。唯一的问题是,有时我的日期为零。因此将日期与 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
这样,如果它不存在,它将设置它,但是否有语义的方式来做到这一点?
更新:
你可能认为这是没有意义的。我问的原因是因为有些引擎的日期为零。例如 excel 将以两种方式返回日期 1. 作为文本"06/12/2013"
或 2. 整数作为从 1900 年 1 月 1 日开始的天数。该日期优于nil
日期,我希望 Ruby 有一个 nils 的默认日期。如果没有,您可以发表评论,不,没有对不起的人。在没有解释原因的情况下投反对票意味着您真的不关心帮助/教任何您只是在那里按下按钮的东西。如果我在这个问题上做错了什么,你可以告诉我我试着修复它,如果它没有意义?