日期与零的比较失败 - 红宝石

时间:2012-04-03 16:00:49

标签: ruby

我正在运行这样的代码:

if valid_from > Date.today

当我运行时,我收到错误说

  

Date与nil的比较失败

我认为它正在发生,因为在某些情况下valid_fromnil。有没有办法避免出现这个错误?

3 个答案:

答案 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