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

时间:2017-05-31 23:25:47

标签: ruby-on-rails operators ruby-on-rails-5 activesupport

在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

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

1 个答案:

答案 0 :(得分:1)

这是parts being hashified引入的错误,似乎是partial backport from 5.1 to 5.0.3。您可以将Rails版本更新为5.1.x,或者首先将值强制转换回数字。