与 nil 进行日期比较失败 - Ruby

6

我正在运行这样的代码:

if valid_from > Date.today

当我运行此代码时,出现以下错误:

Date与nil的比较失败

我猜测这是因为在某些情况下,valid_fromnil。有没有一种避免出现这个错误的方法?


valid_fromnil 时,您希望条件返回什么?您想要 true 还是 false - sawa
3个回答

9
您可以这样做:
if valid_from and valid_from > Date.today
  ...
end

这段代码会在第一个条件中短路,因为valid_from是nil,因此为false。


5
另一种选择是将两者都转换为整数。
if valid_from.to_i > Date.today.to_i

(nil转换为0,且永远不会大于当前日期)

优点是它更短并且不需要额外的处理。缺点是在纪元开始的秒数失败(对许多场景来说可能可以忽略不计)。


2
这是不可能的(再也不行了):NoMethodError(未定义方法'to_i' for Sun,31 Jan 2021:Date) - Sven R.

2
我喜欢这样做:valid_from && valid_from > Date.today

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接