こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、11年目エンジニアです。
この記事では、 Ruby on Railsでschema_migrationsテーブルについて丁寧に解説します。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows10 |
---|---|
Rubyのバージョン | 2.6.6 |
Ruby on Railsのバージョン | 6.0.3.6 |
SQLiteのバージョン | 3.32.3 |
この記事ではRuby on Railsのプロジェクトは
C:\rails_study\sample
に作成しています。
schema_migrationsテーブルとは
schema_migrationsテーブルとは、マイグレーションが実行されたかを管理するためのテーブルです。
マイグレーションを実行するコマンドの
1 |
rails db:migrate |
が実行されたあらゆるRailsのデータベースには、このテーブルが存在します。
実行コマンドについては、こちらの記事をご参考ください。
schema_migrationsテーブルは【version】というカラムのみのテーブルです。
入る値は、マイグレーションファイルのバージョン(タイムスタンプ)です。
上記の画像の「20210413151302」という値は、マイグレーションファイル名のタイムスタンプに紐づいています。
マイグレーションファイル名は、「タイムスタンプ_クラス名.rb」という名前で作成されます。
ファイル名の最初のタイムスタンプがschema_migrationsテーブルに保存されます。
マイグレーションファイルを新規作成するコマンドについては、こちらの記事をご参考ください。
migrateディレクトリ配下を確認すると
- 20210413151302_create_users.rb
- 20220413022739_add_column_user.rb
というマイグレーションファイルがあります。
schema_migrationsテーブルに「20210413151302」という値があるということは、「20210413151302_create_users.rb」は実行しているが「20220413022739_add_column_user.rb」は未実行である、という意味になります。
マイグレーション実行コマンド
1 |
rails db:migrate |
を実行したとき、schema_migrationsテーブルを参照します。
【version】に格納されている値以降のマイグレーションを順々に実行していきます。
実行が成功すると、実行したすべてのマイグレーションファイルのタイムスタンプがschema_migrationsテーブルにどんどん保存されていきます。
まとめ:schema_migrationsテーブルを確認みよう!
以上がRuby on Railsのschema_migrationsテーブルについての解説でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント