データベースのカラムなどを修正したい場合

#db:migrateしたデータベースを修正したい場合

プログラミングスクールでのチーム開発学習中にデータベースの修正を行いたかったのですが、
細かい部分の知識が抜け落ちていたので、備忘録用にまとめてます。

データベースの操作に慣れていない方や、これからデータベースを学習する方の参考にもなれば幸いです。

###開発環境
DB:　MySQL
Rails: 5.2.4.3 

## まず自分が修正したいデータベース（テーブル）の確認を行いましょう
```:ターミナル
% rails db:migrate:status
```
すると、テーブルがこの様に出てくると思います（出てくるテーブルの数や名前はそれぞれ違ってきます）

```:ターミナル
Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200823051138  Devise create ----s
   up     20200824122031  Create -------s
   up     20200824122659  Add ancestry to ------s
   up     20200824123715  Create -----s
   up     20200829083145  Create -----s
   up     20200906141656  Create -----s　今回はこのテーブルを修正したい
   up     20200907114227  Create -----s
  down    20200927061950  Create -----s
  down    20200927065357  Create -----s
※----は自分で作成したテーブル名
```

ここでupとdownに注目です。

マイグレーションの修正を行うには、statusをdownの状態にしておく必要があります。


##次に自分が修正したいデータベース（テーブル）をdownにしましょう
downの状態にするにはターミナルでこの様なコマンドを実行しましょう

```:ターミナル
% rails db:rollback
```
もう一度statusを確認してみましょう

```:ターミナル
% rails db:migrate:status
```

```:ターミナル
Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200823051138  Devise create ----s
   up     20200824122031  Create -------s
   up     20200824122659  Add ancestry to ------s
   up     20200824123715  Create -----s
   up     20200829083145  Create -----s
   up     20200906141656  Create -----s　今回はこのテーブルを修正したい
  down    20200907114227  Create -----s
  down    20200927061950  Create -----s
  down    20200927065357  Create -----s
※----は自分で作成したテーブル名
```

あれ？

一つ下しかdownに変わってません。

というのもrollbackコマンドは一つずつしかdownに変えられないのです。

なので、もう一度やってみましょう。

```:ターミナル
% rails db:rollback
```

もう一度statusを確認してみましょう

```:ターミナル
% rails db:migrate:status
```

```:ターミナル
Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200823051138  Devise create ----s
   up     20200824122031  Create -------s
   up     20200824122659  Add ancestry to ------s
   up     20200824123715  Create -----s
   up     20200829083145  Create -----s
  down    20200906141656  Create -----s　今回はこのテーブルを修正したい
  down    20200907114227  Create -----s
  down    20200927061950  Create -----s
  down    20200927065357  Create -----s
※----は自分で作成したテーブル名
```
今度は無事に目的のテーブルをdownに出来ました。

##修正が終わった後
今回はカラム名の修正を行いたかったので、この後にマイグレーションファイルのカラム名の変更を行いました。

最後に

```:ターミナル
% rails db:migrate
```

もう一度statusを確認しておきましょう

```:ターミナル
% rails db:migrate:status
```

```:ターミナル
Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200823051138  Devise create ----s
   up     20200824122031  Create -------s
   up     20200824122659  Add ancestry to ------s
   up     20200824123715  Create -----s
   up     20200829083145  Create -----s
   up     20200906141656  Create -----s　修正したテーブル
   up     20200907114227  Create -----s
   up     20200927061950  Create -----s
   up    20200927065357  Create -----s
※----は自分で作成したテーブル名
```

rails db:migrateコマンドの場合は、downのテーブルを全てupに変更します。

db:migrateは１度で全てupにするけど
db:rollbackは１つずつしかdownに出来ないんですね。

##一度にrollbackをまとめて行いたい場合

今回の様に複数回rollbackを行わないといけない場合にまとめて行える方法も紹介します

```:ターミナル
% rails db:rollback　STEP=2
```
※STEP＝２を入力する事でrollbackを２回分まとめて実行してくれます。

rollbackコマンドに慣れてきたら、STEPオプションも積極的に使って、作業性をあげていきましょう。