Rails migrationでdefaultに作成時の現在時刻を入れる

default: -> { "now()" } という指定ができる。

  create_table "hoge" do |t|
    t.datetime "hoge_created_at", default: -> { "now()" }, null: false
  end
hoge = Hoge.create
hoge.hoge_created_at
=> nil
# DBで時間を入れるため作成直後はnilになってしまう

hoge.reload.hoge_created_at
=> 2020-07-29 10:33:25 +0900
# reloadすればちゃんと入っている

reloadしないといけないので使用方法には注意が必要 before_create などでデフォルト値設定したほうがRails側的には使いやすいかも