LoginSignup
20
17

More than 3 years have passed since last update.

Ruby on Railsのmigrationでdatetimeのデフォルト値をCURRENT_TIMESTAMPにする

Last updated at Posted at 2016-07-26

結論

t.column   :update_date, 'DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP'

2016/7/28 追記
rails5だと下記でいけるっぽい
こちらの記事より

t.datetime :update_date, default: -> { 'NOW()' }

2016/7/28 追記ここまで

経緯

update_atとは別の用途で必要となったupdate_dateカラムには

「デフォルトは自動でレコード追加日が入るようにする。」

という定義のもと、もともとmigrationに

t.datetime :update_date, default: DateTime.now

って書いてあって、db:migrate流して「show create table」すると

`update_date` datetime DEFAULT '2016-07-26 02:57:58',

あぁそうねそうね。そりゃそうなるよねっっっ当たり前ですよね!!
誰だよこんなのレビュー通したやつは。。。

`update_date` datetime DEFAULT CURRENT_TIMESTAMP

にしたいんですよ俺は!!!

でも。。。

t.datetime :update_date, default: CURRENT_TIMESTAMP

とか書いても怒られるし。。。。

SQLで別途書くしかないのかなぁ。。。と思ってたら
以下の記事で同じように対応されてました!!ありがとうございます!!!!

http://qiita.com/gozuqi/items/d63a9a3572240baf3c67

t.datetimeじゃなくて、t.columnにして、後から設定足してやる感じで色々できるのね。

20
17
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
17