我能做到1.5.days
。
但我该怎么办1.5.months
?
在 Rails 控制台中查看我的结果:
>> 1.5.days
=> 1.5 days
>> 1.5.months
NoMethodError: undefined method `months' for 1.5:Float
我能做到1.5.days
。
但我该怎么办1.5.months
?
在 Rails 控制台中查看我的结果:
>> 1.5.days
=> 1.5 days
>> 1.5.months
NoMethodError: undefined method `months' for 1.5:Float
请参阅此处的弃用警告(来自 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
但是,我建议不要这样做。它被删除是有原因的,实施起来可能很困难。