2014-10-05 25 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

相关问题