Rails の ActiveRecord では、 migration において t.timestamps で導入される created_atupdated_at のカラムについて、少なくとも MySQL においては、 datetime 型を DB 上に作成します。

datetime 型は、いうなればその時刻をタイムゾーンなしで文字列で DB 上に保存しているのに近く、そのデータが動作していた AP(Rails) サーバーがどのタイムゾーンで動いていたのかの情報がない限り、そのデータは正しく取扱えなくなってしまいます。

database に時刻を保存するのならば、なので、 timestamp 型を用いた方が良さそうな気がするのですが、 Rails ではそのような設計にはなっていないです。

質問

  • なぜ、 rails では created_atupdated_attimestamp ではなく datetime を利用するのでしょうか?