ActiveSupport::TimeWithZone#+ に数値を渡したときの挙動

ActiveSupport::TimeWithZone#+ に値を渡すと『渡した時間を加算した時刻』を返します。

# 現在の時刻
current_time = Time.current
pp current_time                # => Mon, 06 Jan 2020 20:10:15 JST +09:00

# + 1日
pp current_time + 1.days      # => Tue, 07 Jan 2020 20:10:15 JST +09:00

# + 10秒
pp current_time + 10.seconds  # => Mon, 06 Jan 2020 20:10:25 JST +09:00

ActiveSupport::TimeWithZone#+ に数値を渡したときの挙動

ActiveSupport::TimeWithZone#+ に数値を渡した場合、数値を秒数として計算します。

# 現在の時刻
current_time = Time.current
pp current_time          # => Mon, 06 Jan 2020 20:11:28 JST +09:00

# + 10.seconds と同じ意味
pp current_time + 10     # => Mon, 06 Jan 2020 20:11:38 JST +09:00

これ、意図としてわかりづらいので数値はエラーにしてしまったほうがいいんじゃないですかねー。