プログラミング

railsのmigrateを取り消す・削除する方法!画像付き解説

railsで難しいのがmigrateの修正や取り消しです。

コントローラーやビューの取り消しなら、ファイルを削除したりコードを書き換えるだけで良いのですが、migrateで不要なデータテーブル、カラム追加してしまった場合は単純にファイルを削除したりコードを書き換えても取り消すことはできません。

migrateの取り消しで苦労している人も多いと思いますので、今回はできるだけわかりやすく、画像付きでmigrateの取り消しについてまとめておこうと思います。

この記事の内容

  • カラム名を間違えた場合の修正方法
  • 不要なテーブルを作成してしまった場合の取り消し方法
  • 2回以上前のmigrateを取り消す方法

直前のmigrateの取り消し カラム名を間違えた場合の修正方法

migrateの取り消しで重要なのが次の2つのファイルです。

  • 「db > migrate」フォルダ内のファイル
  • 「db」フォルダ内の「schema.rb」ファイル

まずは下の手順1、2でファイルを確認しましょう。

手順1.「db > migrate」フォルダ内のファイル確認

(上の画像ではusersテーブルにadminカラムを追加しています)

1回前に行ったmigrate(取り消したいmigrate)の設定ファイルがどこにあるのか確認しましょう。

migrateを行うとrailsアプリの「db」フォルダ内にmigrateが行われた日付の書かれたファイルが作成されます。

最新の日付のファイルが1回前に行われたmigrateです。

ここの段階では、ファイルを確認するだけで大丈夫です。

次の手順へ進みましょう。

 

手順2. schema.rb ファイルのコードを確認する

railsアプリの「db」フォルダ内に「schema.rb」ファイルがあります。

このファイルのコード最下部を確認しましょう。

一番最後に実行されたmigrateが記述されています。

手順1で確認したファイルと同じ内容が最下部に書かれているはずです。

 

手順3. $ rails db:rollback

ターミナルで「$ rails db:rollback」コマンドを入力します。

このrollbackを行うと1回前に行ったmigrateを取り消すことができます。

ただ、rollbackを行っても完全に1回前の状態に戻っている訳ではありません。

手順2で確認した「schema.rb」ファイルの最下部のコードだけ1回前の状態に戻ります(最下部のコードが消える)。

手順1で確認した「migrate」フォルダ内のファイルは何も変わりません

(この状態で「rake db:migrate」を行うとrollbackを行う前の状態に逆戻りしてしまいます)

 

手順4. カラム名や設定を修正する 

(上の画像では手順1でadminカラムだったものをnicknameカラムに変更してる)

手順1で確認した、「db > migrate」フォルダ内の日付の書かれたファイルを修正します。

カラム名だけでなく、booleanやuniqueといった設定も修正することが可能です。

 

5. migrateを行う

修正が終わったら「$ rake db:migrate」を行いましょう。

これで正しいカラム名に修正されます。

 

直前のmigrateで不要なテーブルを作成してしまった場合の取り消し方法

修正ではなく、間違えて作成してしまったテーブルを完全に削除したい場合があると思います。

テーブル作成を取り消す場合もカラム名の修正を行う場合と手順はほとんど変わりませんので、安心して下さい。

カラム名修正の手順1~3と同じ

  1. 「db > migrate」フォルダ内のファイル確認
  2. schema.rb ファイルのコードを確認する
  3. $ rails db:rollback

1~3の手順は上で説明したカラム名の修正手順1~3と全く同じですが、ここから読まれる方もいると思うので再度解説していきます。

 

手順1.「db > migrate」フォルダ内のファイル確認

(上の画像ではusersテーブルにadminカラムを追加しています)

1回前に行ったmigrate(取り消したいmigrate)の設定ファイルがどこにあるのか確認しましょう。

migrateを行うとrailsアプリの「db」フォルダ内にmigrateが行われた日付の書かれたファイルが作成されます。

最新の日付のファイルが1回前に行われたmigrateです。

ここの段階では、ファイルを確認するだけで大丈夫です。

次の手順へ進みましょう。

 

手順2. schema.rb ファイルのコードを確認する

(上の画像ではusersテーブルにadminカラムを追加した場合の例)

railsアプリの「db」フォルダ内に「schema.rb」ファイルがあります。

このファイルのコード最下部を確認しましょう。

一番最後に実行されたmigrate(削除したいテーブルを作成するコード)が記述されています。

手順1で確認したファイルと同じ内容が最下部に書かれているはずです。

 

手順3. $ rails db:rollback

ターミナルで「$ rails db:rollback」コマンドを入力します。

このrollbackを行うと1回前に行ったmigrateを取り消すことができます。

ただ、rollbackを行っても完全に1回前の状態に戻っている訳ではありません。

手順2で確認した「schema.rb」ファイルの最下部のコードだけ1回前の状態に戻ります(最下部のコードが消える)。

手順1で確認した「migrate」フォルダ内のファイルは何も変わりません

(この状態で「rake db:migrate」を行うとrollbackを行う前の状態に逆戻りしてしまいます)

 

手順4.  「db > migrate」フォルダ内の最新の日付が書かれているファイルを削除

「db > migrate」フォルダ内の日付の書かれているファイルで、不要なテーブルを作成するコードが書かれているファイルを削除します。(手順3で確認した、schema.rbファイルの最下部の消えた部分と同じ内容が書かれているもの)

この時、「schema.rb」ファイルは絶対に削除してはいけません

 

5. migrateを行う

削除が終わったら「$ rake db:migrate」を行いましょう。

これで不要なテーブルが削除されます。

 

2回以上前のmigrateを修正、取り消す方法

「$ rails db:rollback」は、実行した回数分だけ「schema.rb」ファイルのコードがmigrate前の状態に戻っていきます

2回前のmigrateを修正(削除)したい場合は、「$ rails db:rollback」を2回行い、「db > migrate」フォルダ内の日付の書かれたファイルの2回前の修正(削除)したい記述のあるものを修正(削除)しましょう。

その後、「$ rake db:migrate」を行えば2回前のmigrateだけが修正されます。

3回前、4回前のmigrateの修正(削除)も同様の手順で行えます。

この時も、「schema.rb」ファイルは直接書き換えたり削除してはいけません

 

まとめ

migrateの修正、取り消しは複雑な手順が必要なので厄介だとは思いますが、railsを使う上で避けては通れないところなので、しっかり覚えておきましょう。

以上「railsのmigrateを取り消す・削除する方法!画像付き解説」でした。

関連記事


-プログラミング

子供

家庭にコストコで売られているような大型遊具を設置してみた

2023/12/8

我が家には4歳と2歳の子供がおり、元気が有り余っているので家に大型の遊具を設置することにしました。 コストコに売られているような大型の遊具(幅6メートル、奥行き4メートル、高さ3メートル程)を探してい ...

アナログゲーム オセロ ゲーム 上達 攻略

【オセロ必勝法】有段者が教える5分で負けなくなるコツ!

2023/12/8

はじめに 引用:オセロ商品 オセロ公式サイト 僕は小学生の頃に友達にオセロに負けたことから、本気でオセロの勉強をして中学生の頃までやっていました。 日本オセロ連盟にはいり、大会に出て2段~5段にも勝ち ...

趣味

【太るジム 東京】ターノルドジムの評判・調査!ガリガリ ジムに行きにくい人でも

2021/11/26

僕は高校生の頃から体重が増えず、170センチ45キロと、かなりの痩せすぎで、大学に入ってからも周りから「ご飯ちゃんと食べてる?」など、頻繁に言われていました。 痩せすぎだと周りからガリガリだと言われる ...



プログラミング画像

プログラミング 仕事・副業

【評価・評判】テックキャンプ (プログラミング教養)受講後の感想!紹介者コードあり

2021/12/24

この記事では、実際にテックキャンプの「プログラミング教養コース」 を受講してみて思ったことをまとめています。 この記事では、テックキャンプ「プログラミング教養」 について書いています。 「プログラミン ...

プログラミング 仕事・副業

【要注意】テックキャンプ受講後の感想・作ったサイト紹介!紹介コードあり

2021/11/6

注意ポイント ※テックエキスパートはTECH CAMPエンジニア・プログラミング教養へとサービス名称が変更されました。 この記事では旧テックエキスパート (TECH CAMPエンジニア)について、受講 ...

Copyright© カレンちゃんねる Life is a game , 2024 All Rights Reserved.