2014-10-05 27 views
0

所有,Rails的做日期時,無法正確轉換爲UTC時區比較

因爲我有一定​​的日期是找談話查詢來允許移動應用程序,以查看是否有自上次任何更新對話它檢查。我發現的是,在進行查詢之前,rails並沒有將我的「since_date」轉換爲UTC,並且我得到的結果不正確。 (這是正確的從我的功能測試來)

生成的查詢是

SELECT "conversations".* FROM "conversations" INNER JOIN "conversation_joins" ON "conversations"."id" = "conversation_joins"."conversation_id" WHERE "conversation_joins"."user_id" = 980190962 AND (last_message_at > '2014-10-05 11:46:22 -0500') 

結果是

[#<Conversation id: 980190962, last_message_id: 298486374, user_ids: nil, last_message_at: "2014-10-05 15:48:22", message_count: 2, created_at: "2014-10-05 16:48:22", updated_at: "2014-10-05 16:48:22", key: "298486374,980190962">] 

通知返回的談話有「2014-一個UTC last_message_at日期/時間10-05 15:48:22「,查詢查找」2014-10-05 11:46:22 -0500「即」2014-10-05 16:46:22「意思是不應該返回。爲了證實這一點,我在X小時前做了同樣的事情,一旦我提前6小時與我的時區猜測相匹配,就不會返回對話。

在創建我的查詢之前,我是否需要在控制器中明確地將UTC的日期/時間更改爲UTC,或者應該由我自己來完成此操作?我的Rails版本是「3.2.13」

回答

2

查詢的代碼在將它們發送到where調用之前必須將日期設置爲UTC。 ActiveRecord不會轉換查詢參數。

+0

謝謝Mauricio。這正是我所猜測的。 – echappy 2014-10-05 17:28:44

相關問題