1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【超初心者向け】rails migrationファイルの削除方法

Posted at

この記事を読むとわかること

  1. マイグレーションファイルを削除する方法
  2. NO FILE を削除する方法

初学者ですが、自分が躓いた箇所を基礎からなるべく分かりやすく書いたつもりなので
参考にしていただけると幸いです。
また間違っているところがあればご教授お願いします。


【STEP0】 migrationの現状把握

まず、migrationの状況確認しましょう
わかる方は読み飛ばしてくださいー
確認コマンドは↓↓↓

rails db:migrate:status

ターミナルへ入れると下のように確認ができます。

ec2-user:~/environment/sample (main) $ rails db:migrate:status

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20211219053729  Devise create users
   up     20211219065745  Devise create admins
   up     20211219070933  Create apps
   up     20211219071038  Create logs
   up     20211225103252  Create active storage tablesactive storage
   up     20220126105427  Hoge

左列のstatusがupになっているとmigtrationの内容が更新されない状態です。
次の解説でstatusをdownしてから、いらないmigrationを消し去りましょう!

1. マイグレーションファイルを削除する方法

手順まとめ

1.migrationをdownにする
$ rails db:migrate:down VERSION=マイグレーションID

2.migrationファイルを削除する
$ rm db/migrate/マイグレーションID_hoge.rb

【解説】

【1-1】migrationをdownにする

statusで確認した"Migration ID"を以下コマンドに当てはめます

rails db:migrate:down VERSION=Migration ID

実際に動かしてみると

ec2-user:~/environment/sample (main) $ rails db:migrate:down VERSION=20220126105427
== 20220126105427 Hoge: reverting =============================================
== 20220126105427 Hoge: reverted (0.0027s) ====================================

再度rails db:migrate:status で確認するとdownになっているはずです!

【1-2】migrationを削除

downにできたのでこれでファイルの削除ができるようになりました!
あとは下のコマンドで瞬☆殺です! ^^
(コマンドではmodelの頭文字は小文字でOKです)

rm db/migrate/20220126105427_hoge.rb

2. NO FILE を削除する方法

手順まとめ

1. NO FILEを名前をつけて復活させる
$ touch db/migrate/マイグレーションID_hoge.rb

2. migrationファイルに内容記載

3.記載した内容を反映させる
$ rails db:migrate

4.migrationをdownにする
$ rails db:migrate:down VERSION=マイグレーションID

5.migrationファイルを削除する
$ rm db/migrate/マイグレーションID_hoge.rb

【解説】

【2-1】 NO FILEを名前をつけて復活させる

modelを先に消してしまった場合、
statusを確認すると、********** NO FILE **********となっています。

ec2-user:~/environment/sample (main) $ rails db:migrate:status

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20211219053729  Devise create users
   up     20211219065745  Devise create admins
   up     20211219070933  Create apps
   up     20211219071038  Create logs
   up     20211225103252  Create active storage tablesactive storage
   up     20220126105427  ********** NO FILE **********

この状態ではそもそもファイルがなく、ファイルの削除ができません。

ファイルが無いのであれば、削除のためにファイルを作っちゃいましょう☆
NO FILEのIDをtouchコマンドを使って以下のように打ち込みます。

touch db/migrate/20220126105427_hoge.rb

【2-2】 migrationファイルに内容記載

後は消すだけ!と思ったら

作成されたファイルに中身を書かないと、認識してくれないようなので"中身をかけ"と怒られます。
(5.2の数字は他のmigrationファイルと合わせた数字を書きます)

class CreateHoges < ActiveRecord::Migration[5.2]
  def change
  end
end

中身を書いたのでrails db:migrateを忘れずに、、、

ここまでくれば、前半と同じで
migrationをdownにする
$ rails db:migrate:down VERSION=マイグレーションID

migrationファイルを削除する
$ rm db/migrate/マイグレーションID_hoge.rb

で、完了です!!!

以上、ご覧いただきありがとうございました!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?