0

我能做到1.5.days

但我该怎么办1.5.months

在 Rails 控制台中查看我的结果:

>> 1.5.days
=> 1.5 days
>> 1.5.months
NoMethodError: undefined method `months' for 1.5:Float
4

1 回答 1

2

请参阅此处的弃用警告(来自 Rails 2):

::ActiveSupport::Deprecation.warn(self.class.deprecated_method_warning(:months, "不考虑小数月份。在调用 #months 之前将值转换为整数。 "), 调用者)

自 Rails 3 以来,它现在已被删除。

如果您查看原始来源,您会发现它无论如何都是一个不令人满意的解决方案:

ActiveSupport::Duration.new(self * 30.days, [[:months, self]])

您可以扩展 float 类以允许此方法:

# config/initializers/core_ext.rb

class Float
  def months
    ActiveSupport::Duration.new(self * 30.days, [[:months, self]])
  end
end

但是,我建议不要这样做。它被删除是有原因的,实施起来可能很困难。

于 2013-07-16T23:58:14.097 回答