我正在运行这样的代码:
if valid_from > Date.today
当我运行时,我收到错误说
Date与nil的比较失败
我认为它正在发生,因为在某些情况下valid_from
是nil
。有没有办法避免出现这个错误?
答案 0 :(得分:7)
你可以这样做:
if valid_from and valid_from > Date.today
...
end
哪个会在第一个子句上短路,因为valid_from是nil,因此是假的。
答案 1 :(得分:4)
另一种选择是将两者都转换为整数
if valid_from.to_i > Date.today.to_i
(nil转换为0并且永远不会大于当前日期)
优点是它更短,不需要额外的情况下的治疗。缺点:在第二个纪元开始时失败(在很多情况下可能会被忽略)
答案 2 :(得分:2)
我喜欢这样做:valid_from && valid_from > Date.today