2

PostgreSQL で Rails を試したのはこれが初めてです。timestamp with timezone絶対時間を格納する列に関して、通常見られるコードでの使用の欠如に混乱しています。主要な例はdevisetimestamp with out timezoneです。これは、PostgreSQL でa に変換される datetime 列を列に格納します。

timestamp with out timezone任意のタイムゾーンを意味する可能性があるため、これは悪い習慣だと思います。別のアプリケーションからデータベースにアクセスしていた場合、Rails を見ないと、タイムスタンプがどのタイム ゾーンを参照しているのかわかりません。分散型の混乱になるだけです。

timestamp with time zonePostgreSQL の ActiveRecord 移行/スキーマでを作成する方法はありますか? 現在の Rails フレームワーク コードとの非互換性の問題は発生しますか?

ActiveRecord がデータベースにとらわれないように努めていることは理解していますが、これは私が無視できない厄介な問題です。

4

2 に答える 2

2

この回答をご覧になることをお勧めします (非常に良い説明): Rails と PostgreSQL でタイムゾーンを完全に無視する


アップデート

ActiveRecord のドキュメント、上記のリンク、および私自身のテストによると、スキーマ移行のデフォルトの ActiveRecorddatetimeと列timestampの型を変更して、PostgreSQL にtimestamp with time zone.

PostgreSQL ドキュメント:

注: SQL 標準では、timestamp だけを書き込むことは、タイム ゾーンなしの timestamp と同等であることが要求されており、PostgreSQL はその動作を尊重します。(7.3 より前のリリースでは、タイム ゾーン付きのタイムスタンプとして扱われていました。) timestamptz は、タイム ゾーン付きのタイムスタンプの省略形として受け入れられます。これは PostgreSQL の拡張機能です。

http://www.postgresql.org/docs/9.1/static/datatype-datetime.html

于 2012-07-30T00:01:07.787 に答える