モデル作成、あっ間違えた・・・時の対処法
モデル作成後、カラム追加し損ねた、データ型間違えた、
モデル作成のコマンドを叩く時、データ型をそもそも記述してなかった際の対処法をまとめます。
コマンドラインにて
$rails g model Book name:string price:integer
最初にこのように書けば string型のname、integer型のpriceカラムが追加されます。
これで問題なければいいのですが、記事冒頭のとおり、後でミスが発覚した際の対処法は以下です。
BookモデルとAuthorモデルを作成し、それを元に話を進めます。
結論
$rails db:migrateをしていない場合
$rails destroy model モデル名
$rails db:migrateを実行している場合
$rails db:migrate:statusでマイグレーションのステータスを確認する、
$rails db:rollback を任意数実行or戻る回数を指定
状態を確認後、Down状態を確認後、マイグレーションファイル編集し、
$Rails db:migrate
手順
$rails db:migrate:status を実行してマイグレーションのステータスを確認する。
以下、booksテーブルとauthorsテーブルを例としますと、
Status Migration ID Migration Name
--------------------------------------------------
up 20211205064135 Create books
up 20211214132252 Create authors
Up状態でマイグレーションファイルを編集後、$rails db:migrateを実行しても意味がなく、
booksテーブルとauthorsテーブルを編集したいときは、
$rails db:rollback を2回実行して(下の up 20211214132252 Create authorsからdown状態になります)
database: crud_development
Status Migration ID Migration Name
--------------------------------------------------
down 20211205064135 Create books
down 20211214132252 Create authors
上記のように、Down状態を確認。 マイグレーションファイルを編集。
その後、$rails db migrateを実行すれば良い。
マイグレーションファイルがある場所は、
db/migrate/202204~~_create_blogposts.rb
と数字の羅列が記載されているファイルです。
カラム追加し損ねた、integer型のbook_idカラムを追加したい場合
t.integer :book_id
モデル作成のコマンド叩く時、そもそも記述してなかった場合
同上
データ型間違えた、text型のbook_idカラムを追加したい場合
t.text :book_id
修正後、
$rails db:migrate
Discussion