DBでTime型カラムを使ったときに設定されるモデルの時間がおかしい
###前提知識
railsが使う時間型にTimeWithZoneクラスがある。これはrailsで設定されたタイムゾーン
をもとにして時間を扱う。
DBのカラムをTime型に指定したモデルの属性はRubyのTime型になる。
###状況
リクエストパラメータ"1970-01-01 10:00:00 +0900"をTime型のモデルの属性にnewで渡したところ、
"2000-01-01 10:00:00 UTC"が生成されてしまう。
本当に生成したいのは"2000-01-01 01:00:00 UTC"
おそらくnewするときにRubyのTime型で10:00 +0900を生成した後、タイムゾーンだけUTCに変換されている。
ビューから明示的にUTCを渡せばうまく生成できるが、そうするとDB以外はJSTで扱うという方針に反してしまう。
###結論 DBにTime型を使っているということでこれは時間量を扱うものであるため、 ビューからは秒数を渡してコントローラでストロングパラメータによる検証を 行うときに秒数からUTCのTime型インスタンスをnewに渡すようにする。
しかし理想としてはDBにTime型が必要であってもdatetimeを使ったほうがわかりやすかったような気もする。