0
私はこのようなユーザーごとにグローバルなタイムゾーンを設定しています:ユーザー指定のtime_zoneを使用して、特定の日のレコードを照会することはできますか?
around_filter :user_time_zone, :if => :current_user
def user_time_zone(&block)
Time.use_zone(current_user.time_zone, &block)
end
私はいくつかのレコードを作成しています、と私はそれらを点検するとき、のcreated_atフィールドが正しいTIME_ZONEを使用しているように見える、例えば、カラカス」で「タイムゾーン:
[#<TimeEntry:0x007f6658ed4e58
id: "89c12856-4180-41ba-be4c-e1d555cd4b5c",
description: "New timer",
created_at: Fri, 25 Mar 2016 11:51:43 VET -04:30,
updated_at: Fri, 25 Mar 2016 11:51:54 VET -04:30>,
#<TimeEntry:0x007f6658ed4d18
id: "8d8598e1-910d-4d89-898e-3de3cdf021c1",
description: "Connecting the timer hours with projects",
created_at: Fri, 25 Mar 2016 12:30:11 VET -04:30,
updated_at: Fri, 25 Mar 2016 12:30:11 VET -04:30>,
#<TimeEntry:0x007f6658ed4bd8
id: "29e67663-e538-41e3-ba4e-0d02d3431abc",
description: "Test completing 2 hours",
created_at: Fri, 25 Mar 2016 12:30:47 VET -04:30,
updated_at: Fri, 25 Mar 2016 12:31:08 VET -04:30>,
#<TimeEntry:0x007f6658ed4a98
id: "2260c971-c4e0-4ae0-97df-672cdeeac65a",
description: "Working on project details",
created_at: Fri, 25 Mar 2016 12:50:55 VET -04:30,
updated_at: Fri, 25 Mar 2016 12:50:55 VET -04:30>,
#<TimeEntry:0x007f6658ed4958
id: "bfe5189d-5124-47c9-ba6d-2f28a08e6c5f",
description: "Working",
created_at: Fri, 25 Mar 2016 19:44:07 VET -04:30,
updated_at: Fri, 25 Mar 2016 19:44:22 VET -04:30>,
#<TimeEntry:0x007f6658ed4818
id: "23b3fd5d-8be4-40b7-a9b9-d48e1fe6816d",
description: "New timer",
created_at: Sat, 26 Mar 2016 19:51:10 VET -04:30,
updated_at: Sat, 26 Mar 2016 19:51:41 VET -04:30>]
'2016年3月26日' オン '2016年3月25日' と1の5つのレコードがあります。私はこのような日によってそれらを取得しようとしている:
day = '2016-03-25'
@project.time_entries.where("date_trunc('day', created_at) = ?", day).count
しかし、私は、私は25日に4つのレコードを取得しています、26日と27日より1上の1つのレコードを誤った結果を取得しています。 created_at
フィールドでは、デフォルトのtime_zone(UTCで、time_zoneからオフセットを '+4:30'に設定しています)を使用しているようです。
設定したtime_zoneを使用して特定の日のレコードを取得するにはどうすればよいですか?