0

一部のレールマジックは、UNIX 時間 1345069440000 を使用して着信投稿をバックエンドの適切な日時に自動的に変換すると仮定しました。ただし、「start_at」という日時のモデルイベントがあり、次のとおりです。

 e = Event.new()
 e.start_at = 1345069440000
 e.save

1345069440000 をそのまま送信したようで、mysql はそれを無効にします。ルビタイムと同じ

 e = Event.new()
 e.start_at = 1345069440
 e.save

任意の文字列に設定すると、より適切な推論が行われます。

e.start_at = '1/1344/12'
e.save

日付を「1334-12-01 00:00:00 UTC +00:00」に設定します。したがって、試行しています。

明らかに、クラスでセッターをオーバーライドできますが、この動作をはるかに上位に変更して、すべてのコントローラーが渡された日時の unix 時間をサポートすることを望んでいました。

レール 3.2、ルビー 1.9.2

4

1 に答える 1

1

次のコードactive_record/attribute_methods/time_zone_conversion.rbが変換を試みているようです:

unless time.acts_like?(:time)
  time = time.is_a?(String) ? Time.zone.parse(time) : time.to_time rescue time
end

1 つのオプション (少し手間がかかりますが) は、モンキー パッチ Fixnum に .to_time メソッドを追加することです。

def to_time
  Time.at(self)
end
于 2012-08-17T00:22:08.153 に答える