Voici la configuration:conditions named_scope et décalage de fuseau horaire
end_date = DateTime.parse('2010-01-01 12:00:00-04')
et il est parfois initialisés:
end_date = 1.days.ago
La question ... faire ces named_scope (s) génèrent le même EXACT SQL?
named_scope :before, lambda { |end_date|
{ :conditions =>
["overdraft_transaction_payments.created_at < ?", end_date] }
}
et
named_scope :before, lambda { |end_date|
{ :conditions =>
["overdraft_transaction_payments.created_at < ?", end_date.utc] }
}
Dans le premier exemple que j'utilise date_fin et dans le second que j'utilise end_date.utc.
(Il peut être important de noter que ... Le système d'exploitation du serveur de base de données est défini sur CDT et la base de données utilise le protocole UTC en interne.Le système d'exploitation du serveur de rails est défini sur CDT. que ce n'est probablement pas la manière optimale de configurer ces systèmes, cependant, la question à portée de main est la sortie ActiveRecord.)
Pour ce que cela vaut la peine mon intuition dit que le premier exemple va générer une chaîne de temps pour le TZ locale où la seconde va générer un UTC-0. PS: Y at-il un mini cas de test que je peux utiliser pour valider mon intuition?
De votre exemple # 1 il ressemble à ".to_s (: db)" ne considérerait pas TZ dans le cadre de la mise en forme. – Richard
La leçon apprise ... lorsque les fuseaux horaires sont si fous, assurez-vous d'utiliser le .to_s (db) explicitement dans votre SQL. – Richard