Ruby

RailsのmigrationでCURRENT_TIMESTAMPを設定する

RailsのmigrationファイルでCURRENT_TIMESTAMPを設定する方法があった。

この変更かな? https://github.com/rails/rails/pull/20005

default に Proc で渡せば式展開されずに済む。

create_table :hoge do |t|
  t.integer :code,        null: false, primary_key: true
  // ...
  t.datetime :created_at, null: false, default: ->{ "CURRENT_TIMESTAMP" }
  t.datetime :updated_at, null: false, default: ->{ "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP" }
end

 

SHOW CREATE TABLE の結果

CREATE TABLE `hoge` (
  `code` int NOT NULL AUTO_INCREMENT,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

-Ruby
-

© 2021 フリエン生活 Powered by AFFINGER5