AWS Record HashModel

★ブログ移行のお知らせ
サイトを移行しました。以下をクリックください。
きよしの倶楽部 – 生活を潤わす情報を発信中。GTDを得意としてます。


ーーー
AWS::Record::HashModel。便利ですね。
ただ、保存する時に一部、UTCでつっこまれることがあります。
ひとつひとつ、きっちり対応しても良いのですが、面倒なのでtimezoneがUTCの時はattributeで強制的にJSTにして、DBはいつでもJSTで保存できるようにしました。


以下、aws-sdk-XXX/lib/aws/record/attributes.rb

class DateTimeAttr < BaseAttr

 def self.type_cast raw_value, options = {}
          case raw_value
          when nil      then nil
          when ''       then nil
          ##ここをコメントアウト
          #when DateTime then raw_value

   ##以下のようにカスタマイズ
          when DateTime then
           if raw_value.zone == "+00:00"
             raw_value = raw_value - Rational(9, 24)
             raw_value.new_offset(Rational(9,24))
           else
             raw_value
           end

          when Integer  then
            begin
              DateTime.parse(Time.at(raw_value).to_s) # timestamp
            rescue
              nil
            end
          else
            begin
              DateTime.parse(raw_value.to_s) # Time, Date or String
            rescue
              nil
            end
          end
        end

ま、そのうち本家の方がきっちり対応してくれるでしょう。
それまでのつなぎということで。