Closed3

Rails7.0アップグレードによるschema.rbの変更点

bisquebisque

Rails6.1から7.0にアップグレード後、 db:migrate を実行したところ schema.rb に変更があったので、変更された経緯などをメモしておく。

bisquebisque

schema.rbの変更点

  • スキーマバージョン ActiveRecord::Schema[7.0] が追加される
  • 7.0以前のschema.rbに設定されていたprecision: 6 が削除される
  • 7.0以前にprecisionが設定されていなかったtimestampフィールドにprecision: nil が追加される
bisquebisque

経緯

Rails6.0.0より Ref

  • t.timestampsフィールドにデフォルトで precision: 6 が指定されるようになった
  • t.timestamps以外の日時型フィールドは明示的に指定をしなければ precision は指定されない(これはDBのデフォルト精度を使うことを意味する)

Rails7.0.0より Ref

  • t.timestamps以外のdatetimeフィールドも precision: 6 でカラムを作るようになった(この変更によりschema.rbにprecision: 6は削除された)
  • precisionをDBのデフォルトにするにはprecision: nilを明示することが必要になった

Rails 7.0.2より Ref

上記の互換性維持のため、schemaファイルにRailsバージョンがつくようになった

  • ActiveRecord::Schema[6.1]ならprecisionなしをDBのデフォルトと読み替える
  • ActiveRecord::Schema[7.0]ならprecisionなしをprecision: 6と読み替える
このスクラップは2023/09/05にクローズされました