Rails: 添加两个 ActiveSupport::Duration 对象时出错

Rails: error when adding two ActiveSupport::Duration objects

在 Rails 控制台 (Rails 5.0.1) 中,我有一个表示时间间隔的 ActiveSupport::Duration 对象,在本例中为 12 分钟:

x = ActiveSupport::Duration.parse("P0Y0M0DT0H12M")

我想给它添加一个随机的分钟数,所以我创建了另一个 ActiveSupport::Duration 对象:

y = ActiveSupport::Duration.parse("P0Y0M0DT0H3M")

根据 the docs,我希望能够简单地使用 + 运算符添加它们并执行 x+y,但这会导致:

NoMethodError: undefined method '+' for {:years=>0, :months=>0, :days=>0, :hours=>0, :minutes=>12}:Hash

我哪里错了?为什么它认为它们是哈希值?

这是 parts being hashified, which appears to be a partial backport from 5.1 to 5.0.3 引入的错误。您可以将 Rails 版本更新为 5。1.x,或者先将值强制恢复为数字。