これはちょっと面白いことですが、noobの問題の場合はRubyとMongoIdでタイムゾーンを正しく保存する方法は?
私は自分のプロフィールで自分のタイムゾーンを設定できるアプリを持っています。
誰かがラインナップ(アプリ固有の用語)を追加すると、私は次のようにします。
time = ActiveSupport::TimeZone.new(user.timezone).parse(
"Wednesday, 26 October, 2011 13:30:00"
)
# This outputs: 2011-10-26 13:30:00 +0200 - valid according to the user selected TZ
私はその後、ラインナップを保存:
Lineup.create({
:date => time.gmtime,
:uid => user._id,
:pid => product._id
})
これは(理論的に)として日付を保存する必要がありますgmtimeを参照してください。ただし、レコードを表示するときに次のように表示されます。
{
"_id": ObjectId("4e9c6613e673454f93000002"),
"date": "Wed, 26 Oct 2011 13: 30: 00 +0200",
"uid": "4e9b81f6e673454c8a000001",
"pid": "4e9c6613e673454f93000001",
"created_at": "Mon, 17 Oct 2011 19: 29: 55 +0200"
}
ご覧のとおり、日付フィールドはwrですong - それはユーザーのタイムゾーンをまだ維持しています。タイムゾーンに固有のものではなく、GMTでなければなりません。
I出力time.gmtimeた場合、私は(それを保存する必要があります)右の時間を得る:
2011-10-26 11:30:00 UTC (correct)
任意のアイデアそれが実際GMT日付を節約するように、GMTの日付を保存する方法?
これは、現在のバージョンのモンゴイでもDateTimeで動作します(私は2.4.7です)。 https://github.com/mongoid/mongoid/issues/1135を参照してください。 –