📝

モデル作成、あっ間違えた・・・時の対処法

2022/04/17に公開

モデル作成後、カラム追加し損ねた、データ型間違えた、
モデル作成のコマンドを叩く時、データ型をそもそも記述してなかった際の対処法をまとめます。

コマンドラインにて

$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