商品の公開日等でタイムゾーンの扱いがおかしい
エレコマの日付に対する考え方は、http://doruby.kbmj.com/sakuma85_on_rails/20090602/Rails2_created_at_1 にあるように 「日本時間をそのまま DB に保存する」というものだと理解していますが、これに準じた扱いをしていない箇所がいくつかあるようです。
例えば app/models/product.rb 中で
def in_sale_term?(now=Time.now) sale_start_at <= now && now <= (sale_end_at + 1.day - 1 ) end
>> public_start_at = DateTime.parse('2011-02-01T00:00:00+00:00') => Tue, 01 Feb 2011 00:00:00 +0000 >> now = Time.parse('2011-02-01T06:00:00+09:00') => 火 2月 01 06:00:00 +0900 2011 >> public_start_at <= now => false
また、Product::csv 内で
elsif ![:small_resource_path,:medium_resource_path,:large_resource_path,:category_name,:delivery_dates_label,:supplier_name].include?(column)&& Product.columns_hash[column.to_s].type == :datetime (product[column] + (60*60*9)).strftime("%Y-%m-%d %H:%M") if product[column]
エレコマの日付に対する考え方は、http://doruby.kbmj.com/sakuma85_on_rails/20090602/Rails2_created_at_1 にあるように 「日本時間をそのまま DB に保存する」というものだと理解していますが、これに準じた扱いをしていない箇所がいくつかあるようです。
例えば app/models/product.rb 中で
のように判定していますが、販売期間を 2/1~2/28 に設定していて 2/1 6:00 にこの判定を行った場合、 という感じで、期間内にも関わらず期間外と判定されてしまうため、9:00 にならないと公開されないようです。 (Product#in_public_term? も同様です。)また、Product::csv 内で
のように 60*60*9 を足していますが、この処理も不要だと思います。 (というか、DateTime に対する加算は日数で計算されるので、CSV ダウンロードすると日付が 2099 年になっています・・・。)