マイグレーションに関する備忘録
#1.マイグレーションファイルの実行状況を知る方法
以下のコマンドをターミナル上で実行する。
rake db:migrate:status
そうすると、以下のような表示がされる。
Status Migration ID Migration Name
--------------------------------------------------
up 20190618115638 Devise create users
up 20190620183857 Create groups
up 20190620183912 Create group users
down 20190621063102 Add devise to users
up → マイグレーションファイル実行済み
down → マイグレーションファイル未実行
#2.マイグレーションファイルを修正する方法
2つの修正方法を紹介する。
1つ目の方法
①以下のコマンドを実行して、一度マイグレーションファイルが実行される前の状態に戻す。
rake db:rollback
この時に、DB(データベース)上のカラムなどが消去されているかを確認する。
ちなみに、マイグレーションファイルの変更履歴を確認したい場合は、schema_migrationsを見れば、今までの変更履歴が確認できる。
db/schema.rbのディレクトリにある。
https://gyazo.com/e2d48570c5a046a8f425e56838aae0e6
②マイグレーションファイルの中身(カラム名やカラムの型など)を修正する。
③再度、以下のコマンドを実行して、マイグレーションファイルを実行する。
rake db:migrate
2つ目の方法
①以下のコマンドで、新たなマイグレーションファイルを作成する。
$ rails g migration クラス名
※クラス名は、処理と対象を書く。usreテーブルにnameカラムを追加したい場合は、以下のようになる。
rails g migration AddNameToUsers name:string
②修正箇所を正しい内容に変更するためのマイグレーションファイルを作成する。
③マイグレーションファイルを実行する。
#3.一度実行したマイグレーションファイル自体の内容を変更あるいは、ファイル自体を削除しない方がいい理由
アプリケーションのファイルをデプロイ先にpushし、マイグレーションファイルの実行をした時、ローカル環境と異なったDB(データベース)ができてしまったり、エラーになってしまうから。
<参考記事>
・https://qiita.com/usizou/items/6dcdea46ec0b4a89c661
・http://railsdoc.com/rake
・https://qiita.com/azusanakano/items/a2847e4e582b9a627e3a