RubyのRange
で..
と...
演算子をオーバーライドしたいと考えています。Ruby Rangesの..と...演算子をオーバーライドして、Float :: INFINITYを受け入れることができますか?
理由は、私はデータベース内の無限の日付範囲で作業しています。あなたがinfinty
datetimeをPostgresから引き出すと、RubyにはFloat::INFINITY
が得られます。
Date.today...Float::INFINITY
=> Wed, 02 Nov 2016...Infinity
DateTime.now...Float::INFINITY
# ArgumentError: bad value for range
Time.now...Float::INFINITY
# ArgumentError: bad value for range
...まだ私は私のコードでかなり頻繁に..
と...
の構文を使用します。
これに伴う問題は、私は範囲の終わりとしてFloat::INFINITY
を使用することはできません。
にも範囲を構築することができるようにするには、あなたの代わりにDateTime::Infinity.new
を使用する必要があります。
Date.today...DateTime::Infinity.new
=> Wed, 02 Nov 2016...#<Date::Infinity:0x007fd82348c698 @d=1>
DateTime.now...DateTime::Infinity.new
=> Wed, 02 Nov 2016 12:57:07 +0000...#<Date::Infinity:0x007fd82348c698 @d=1>
Time.now...DateTime::Infinity.new
=> 2016-11-02 12:57:33 +0000...#<Date::Infinity:0x007fd82348c698 @d=1>
しかし、私はFloat::INFINITY
行う必要があります - >DateTime::Infinity.new
変換を毎回:
model.start_time...convert_infinity(model.end_time)
..
と...
演算子をオーバーライドして、変換関数を組み込んで構文を保持できる方法はありますかシュガー?
私はこれを発見しました:https://bugs.ruby-lang.org/issues/6864。それが決心されたかどうかは分かりません。 –
あなたはどのバージョンのRailsを使用していますか? 'DateTime.now ... Float :: INFINITY'はRails 5.0.0.1で正常に動作します。 –
ああ、 '4.2.5' – fatuhoku