【TechCamp57日目】モデルの削除と変更

今日は教室で勉強でした。

【本日の実施項目】
●チーム
・ancestry(多層階構造)の実装
・出品時のカテゴリー選択
●個人
・Scss色の変数化

以前書いたancestryを実際のチームアプリでも導入を試みました。
正直gem入れてrails db:seedでデータ入れて。
楽勝でしょ!
って思っていたら
まさかのrails db:seedが出来ない!!!!!!
結構いろいろためしたのですが
思わぬところに落とし穴がありました。

結論

すでに生成されているモデル名が間違っていた模様。
たしかに「NameError」ってなってました。
Categoryっていう名前のモデルはないよ!と言っていたみたいです。

よし!じゃあモデル名を変えよう!
と単純な僕は考えましたが
マイグレーションに関してはお馴染みロールバックで変更できましたが
モデルってどうやって変更するん?となりました。
まぁ単純にファイル名変更ではないんだろうな。
とさすがの僕でもお察しです。

モデルを生成した際にマイグレーションも一緒に生成されるため
まずモデルを変更するには
先にマイグレーションファイルを削除
しないといけないみたいです。
ここ結構重要!!!!!!
先にマイグレーションファイルだけ消すとエラーが出ます。
migrateできなくなります。

【実装手順】
①対象のマイグレーションファイルをrollback

$ rails db:rollback
# 場所まで指定する場合STEPをつける
$ rails db:rollback STEP=数字

念のため

$ rails db:migrate:status

でファイルがUpからDownになっていることを確認。
Downを確認したら

②対象ファイルの削除

消したいマイグレーションファイルを手動で削除。

③モデルを削除(destroy)
続いて対象のmodelの削除です。

rails d model モデル名

④モデルを生成
新しいモデルの作成。

rails g model モデル名

⑤マイグレーション!!!!
モデルの生成でマイグレーションファイルも同時に生成されるので
カラムなどの変更があれば適応実施し
最後に

rails db:migrate

以上です。

チーム開発では自分でやってないところで何か問題が起きてしまうと
それを発見するのにめっちゃ苦労しますね•••。
しかも事前にデモでやっていると固定観念に囚われがち。

このあとデプロイの際にでエラーが起きてしまったそう。
申し訳ない。
•••やはりマイグレーションファイルは極力いじりたくない。

今日は朝活も含め疲れました。
おやすみなさい。

この記事が気に入ったらサポートをしてみませんか?