#db:migtateのやり直り方法
マイグレートしたファイルを削除する(やり直しをかける)
$ rails db:migrate:down VERSION=[time stamp]
$ rmi -rf [time stamp]_***.rb
#migrate_***.rbへ追記方法
作成したカラムを修正したい時は、(1)defメソッドをupとdownを用意する。(2)change_columnに追記したいコードを入力する。(3)downの中に、remove_columnを用意して、元々のadd_columnを記述する。
class AddUsernameToUsers < ActiveRecord::Migration[6.0]
def change
add_column :users, :username, :string #ここにnull: false, default: ""を加えたい。
end
end
class AddUsernameToUsers < ActiveRecord::Migration[6.0]
def up
change_column :users, :username, :string, null: false, default: ""
add_column :users, :username, :string
end
def down
remove_column :users, :username, :string
end
end
終わり。
#もし、db:migrate:downさせる前にマイグレーションファイルを削除してしまっていた場合
設定等が残ってしまうため、同じタイムスタンプのファイルを作成する必要がある
まずは、マイグレーションの状況を見て、何がup状態か確認する
やらかしている時は、下記のようなNO FILEがいる
$ rails db:migrate:status
Status Migration ID Migration Name
--------------------------------------------------
up 20200817055815 Devise create users
up 20200817065100 Add name to users
up 20200817102227 Create rooms
up 20200817104106 Create entries
up 20200818043808 ********** NO FILE **********
こうなっていた場合は、NO FILEのID(20200818043808)を元に、
簡易なマイグレーションファイルを作成する
(変にスペルミスしないように注意!、私は大文字小文字の打ち間違えで、エラー起こした。照り)
$ vim db/migrate/20200818043808_tmp.rb
class Tmp < ActiveRecord::Migration
def change
end
end
念のため、statusでNO FILEがTmpに変わっていることを確認。(割愛)
$ rails db:migrate:status
Status Migration ID Migration Name
--------------------------------------------------
up 20200817055815 Devise create users
up 20200817065100 Add name to users
up 20200817102227 Create rooms
up 20200817104106 Create entries
up 20200818043808 Tmp
確認してできたら、上記の通りdownさせて、削除して終わり!
$ rails db:migrate:down VERSION=20200818043808
$ rm -rf 20200818043808_tmp.rb
終わり
参考にさせていただいた記事
https://qiita.com/gita/items/2198e2961a9fc7d10bd2
誤った理解をしていればご指摘いただければ幸いです。