2016-03-26 4 views
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を使用して特定の日のレコードを取得するにはどうすればよいですか?

答えて

0

私は範囲の条件を使用しています、代わりに条件付きの文字列を使用するのでは、それは次のように動作させるために管理:

total_time = @project.time_entries.where(created_at: (day.beginning_of_day..day.end_of_day)).count 
関連する問題