У меня есть область, которая запрашивает сегодня вызовы. Исходя из области, я использую ее для подсчета количества вызовов на сегодня.
Мои даты хранятся в UTC, но рельсы преобразуются в мой локальный часовой пояс. То, что я пытаюсь сделать, - найти все вызовы между сегодня в 00:00 и 23:59.
Область применения:
scope :today, where("DATE(transfer_date) BETWEEN ? AND ?", Time.zone.now.utc.beginning_of_day, Time.zone.now.utc.end_of_day)
вывод irb: (вызов, который он ловит из-за UTC)
irb(main):010:0> Call.last.transfer_date
Call Load (0.9ms) SELECT "calls".* FROM "calls" ORDER BY "calls"."id" DESC LIMIT 1
=> Sun, 07 Oct 2012 19:45:00 CDT -05:00
irb(main):011:0>
irb(main):011:0> Call.last.transfer_date.utc
Call Load (1.3ms) SELECT "calls".* FROM "calls" ORDER BY "calls"."id" DESC LIMIT 1
=> 2012-10-08 00:45:00 UTC
Я пытаюсь выяснить, как запросить только звонки, которые были между 00:00 и 23:59 на сегодня. Пока проблема с областью и без utc, zone и т.д. Не работает. Он продолжает извлекать масштаб, основанный на UTC, который включает в себя призыв со вчерашнего дня (вчера, если он отформатирован с местным часовым поясом).
Как я могу запросить между двумя моментами, чтобы получить правильный вывод? Я здесь потерялся.