はじめに
こんにちは!Webエンジニアを目指す大学生のゆーとです :)
今回はただなんとなくで使っていた$rails db:seed
でDBのテーブルに入っている初期データが重複するという事態が発生してしまったので、その原因と解決した方法を自分の為のメモということで書かせて頂きます!
もし、認識や対処方法が間違っている場合は指摘して下さると幸いです🙇♀️
初期値のデータが重複してしまった
ポートフォリオ実装中に初期データを入れる為、seedファイルにデータを記入して$rails db:seed
した後、スペルミスがあることが判明。
⬇️
データ記入済みのseedファイルのスペルミスを直した後、その修正を反映させる為にもう一度$rails db:seed
をしてみると
スペルミスを含めた3つ分のデータと修正箇所含めた3つ分のデータ合わせて6つのデータがテーブルに格納されてしまった。
原因
原因としては自分のseedファイル、$rails db:seed
に対する認識の誤りであった。
✖︎ 一度データをテーブルに格納したとしても、後から更新という形でseedファイルの内容を変更しデータを修正することが出来ると考えていた
◯ 一度$rails db:seed
でテーブルに格納したデータはすでにデータベースに反映されており、seedファイルに変更を加えるて$rails db:seed
するともう一度全部のデータが格納されてしまう
対策
対策としては一度格納したデータを全てリセットして、seedファイル修正後に再度$rails db:seed
をすることが有効な方法。
- 以下のコマンドでテーブルからデータをリセットする(削除する)
$rails db:migrate:reset
⬇️
- seedファイルを修正
⬇︎
- 以下のコマンドでデータを再度格納
$ rails db:seed
まとめ
なんとなくで使っていると今回のようなトラブルに遭遇してしまうので、やはり公式ドキュメント等でしっかり網羅的に理解することは大切だなと感じました。
今後も夢であるWebエンジニアになる為に積極的に学んでいきたいと思います❗️❗️