読者です 読者をやめる 読者になる 読者になる

ここにタイトルが入ります

デザイン&プログラミングのことも書くし、それ以外のことも書く。

【Rails】日時(Time、DateTime)をDBに入る形に修正する

Rails

※2013/06/09追記
TimeWithZoneインスタンスに使うと予想外の動きをしたのでご注意!!

〜大変参考になりました!!〜
[rails] Time#to_s(:db) と TimeWithZone#to_s(:db) は違うので注意 - memo_ruby




Timeオブジェクトを扱うと「2012-10-10 10:10:10 +0900」のような形で表示されます。
MysqlでこのままDateTime型に突っ込もうとしたら+900(タイムゾーンが東京?の場合)が邪魔でDBに入れられないんですよね…

別に文字列を自分で整形して「2010-10-10 10:10:10」に直してもいいんですけど、
to_s(:db)をつけることでタイムゾーンを省いたUTC(世界標準時?)形式での文字列が取得できます。

Time.now #=> 2012-10-08 15:26:48 +0900
Time.now.to_s(:db) #=> "2012-10-08 15:28:12"

これ、ActiveSupportが拡張している機能で、他にもいろいろ
Timeクラスの拡張機能を提供してくれているんですね。

ActiveSupport::TimeWithZone

こういう形式で取得できたら…とかこんな扱い方・メソッドがあったら…とか思ったら
まずActiveSupportの機能チェックしてみないとダメですね。