【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
以上です。
チーム開発では自分でやってないところで何か問題が起きてしまうと
それを発見するのにめっちゃ苦労しますね•••。
しかも事前にデモでやっていると固定観念に囚われがち。
このあとデプロイの際にでエラーが起きてしまったそう。
申し訳ない。
•••やはりマイグレーションファイルは極力いじりたくない。
今日は朝活も含め疲れました。
おやすみなさい。
この記事が気に入ったらサポートをしてみませんか?