1

イベントをデフォルトのタイム ゾーンで保存したい。つまり、ユーザーがイベントを送信するたびに、イベントはデフォルトのタイム ゾーンに変換され、データベースに保存されます。

ユーザーがイベントを要求するたびに、システムはそのユーザーのタイム ゾーンを検出し、そのユーザーのタイム ゾーンで (既定の形式から) 日付を変換してユーザーに表示します。

どこから始めればよいか苦労しています。多くのメモやドキュメントを見ましたが、それを行うための完全なプロセスを理解できませんでした。

私はこのコードを見ましたが、それを使用する方法を理解できませんでした:

before_filter :set_time_zone

def set_time_zone
  Time.zone = current_user.time_zone if current_user
end
4

1 に答える 1

3

データベースのデフォルトのタイム ゾーンは UTC です。

次の 2 つの方法があります。

  1. ユーザーが自分のタイムゾーンをデータベースに保存できるようにする
  2. IP からタイムゾーンを取得する

オプション 1 の場合、Rails はタイム ゾーンを非常に適切にサポートしています。#all メソッドを使用すると、ユーザーが選択できるドロップダウンを作成できます。次に、ユーザー レコードと共にデータベースに保存します。

オプション 2 は、ユーザーの負担は少なくなりますが、精度も低くなります。IP をタイム ゾーンに変換するサービスがいくつかあります。

特定のタイム ゾーンで時刻を表示するには、Time#in_time_zoneを使用するか、上記のように設定するTime.zoneと、適切に表示されます。

于 2012-11-17T14:15:45.563 に答える