Nwht0xn1

Time.now.all_day などで日付境界を利用する場合はタイムゾーンに注意したいCreated on 2016-07-20 by r7kamura

https://amakan.net/comics/today にて「今日発売の漫画」という機能を提供していたが、Time.now.all_day のように日付境界を利用する実装を使ってしまった結果、システムのタイムゾーンがUTC+0でユーザのタイムゾーンがUTC+9なことに起因し、午前0時から9時からの間は誤って前日の新刊を表示してしまうという不具合を出してしまった。

diff --git a/app/models/product.rb b/app/models/product.rb
index 4e821ad..c310823 100644
--- a/app/models/product.rb
+++ b/app/models/product.rb
@@ -61,7 +61,7 @@ class Product < ActiveRecord::Base
   validates :released_at, presence: true

   scope :released, -> { where("released_at <= ?", ::Time.now) }
-  scope :released_today, -> { where(released_at: ::Time.now.all_day) }
+  scope :released_today, -> { where(released_at: ::Time.zone.now.all_day) }

   after_create :set_product_list
   before_validation :find_or_initialize_authors, if: :author_assignable?