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 を呼び出す前に値を整数に変換してください。 "), caller)

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 に答える