TTIL

2020-05-15 Ruby cover? or between?

Range#=== / Range#cover?

ActiveSupport::TimeWithZone#between?を使うと日付の範囲内かどうかの判定を行うことができるが、上記の書き方の場合、始点もしくは終点が nil の場合にエラーが出てしまう。

RubyのRange#cover?を使うと上述の問題が回避できる。

> (Date.yesterday..Date.tomorrow).cover? Time.now
=> true

> (Date.yesterday..nil).cover? Time.now
=> true

> (nil..Date.tomorrow).cover? Time.now
=> true