2011-12-19 2 views
1

私はARを使って時間形式(jsonにレンダリングされたとき)を使ってクエリを実行すると何十万もの曲を含むSongモデルを持っています:2011-12-19T11:04: 39Z。Rails:created_atが別の形式で返す

私はJSONにレンダリングする際に、時間形式が返さSong.connection.execute()を使用してクエリを実行すると、このようなものです:私は実際にconnection.execute()呼び出しから返される生の形式を好む08.207467

:2011年11月20日19:00 。 ARが一貫してそれを変換しないようにするにはどうしたらいいですか?どうすれば正しいタイムゾーンなどを設定できますか?

基本的には、生のdbコールとARを通じて要求が行われたときに、常に同じ形式であることを確認する必要があります。

答えて

1

の私は他の道を行くだろうということです日付と時刻の形式を設定します。私は改宗をAR形式を好むだろう/あなたを無料で与える。その理由は、フォーマットを構成する方がはるかに簡単なことです(そのためには、例えばto_formatted_sを参照してください)。

connection.executeの使用を避け、常にYourModel.find_by_sqlを使用する必要があります。すべての属性が正しく変換されたYourModelインスタンスの配列が得られます。詳細については、ドキュメント:ri find_by_sql

0

違いはActiveRecordがRuby DateTimeを作成し、executeがSQLエンジンから直接プレーンな文字列回答を与えるためです。したがって、1つはRailsのデフォルトフォーマットで、もう1つはDBのデフォルトフォーマットです。

Thisまたはthisが該当します。

1

編集ロケールファイルとあなたが

en: 
    date: 
    formats: 
     default: "%Y-%m-%d %H:%M:%S.%Z" 
     short: "%d %b" 
     long: "%d %B %Y" 

を望むように構文はstrftime

関連する問題