En règle générale, je stocke toutes les dates sur mon serveur dans le fuseau horaire UTC et laissez l'interface utilisateur gérer n'importe quelle conversion de fuseau horaire. Pour obtenir le type de requête que vous voulez après avoir travaillé correctement, j'ai dû masser la date entrante dans une plage de temps spécifique UTC en premier.
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
Cela vous permet d'appeler
# today
posts = Post.created(Date.today)
# yesterday
posts = Post.created(Date.today - 1)