【发布时间】:2014-10-05 17:11:10
【问题描述】:
全部,
我有一个查询,它正在查找自某个日期以来的对话,以允许移动应用查看自上次检查以来是否有任何更新的对话。我发现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">]
请注意,返回的对话的 UTC last_message_at 日期/时间为“2014-10-05 15:48:22”,查询正在寻找“2014-10-05 11:46:22 -0500”,即“ 2014-10-05 16:46:22" 表示不应退回。为了确认这一点,我做了同样的事情,向前看 X 小时,一旦我提前 6 小时到达,对话就没有返回,这与我的时区推测相符。
在创建查询之前,我是否需要在控制器中将日期/时间显式更改为 UTC,或者由于时区已经包含在内,rails 是否应该为我执行此操作?我的 Rails 版本是“3.2.13”
【问题讨论】:
标签: ruby-on-rails date datetime