Как правило, я храню все даты на своем сервере в часовом поясе UTC и позволяю интерфейсу пользователя обрабатывать любые преобразования часовых поясов.
Чтобы получить тот запрос, который вы хотите получить после корректной работы, мне пришлось втиснуть входящую дату в
Первый диапазон времени по UTC.
require 'date'
class Post < ActiveRecord::Base
def self.created(a_date)
return Post.where(created_at: to_timerange(a_date))
end
private
def self.to_timerange(a_date)
raise ArgumentError, "expected 'a_date' to be a Date" unless a_date.is_a? Date
dts = Time.new(a_date.year, a_date.month, a_date.day, 0, 0, 0).utc
dte = dts + (24 * 60 * 60) - 1
return (dts...dte)
end
end
Это тогда позволяет вам звонить
# today
posts = Post.created(Date.today)
# yesterday
posts = Post.created(Date.today - 1)