初めてのオリジナルアプリ開発でつまづいたので忘れないための備忘録として書いておきます。
プログラミング初めて1か月の初心者なので内容に間違いがあるかもしれません。あったら是非教えてください!ではいってみよー!
1 2 3 |
up 202304042127 Create questions down 202304052200 Devise create users down 202304062123 Create answers |
questionsコントローラーに初めて取り入れるプログラムがあり、先にquestionsテーブルだけ作成してその機能を実装→その他の機能を実装という順序で進めていました。
quesitonsコントローラーが無事動くことを確認し、deviseをmigrateするタイミングで一度rollbackしてquestionsもdown→usersカラムとanswersカラム追加してmigrate
そこでエラーが出ます。foreign_keyのuserありませんよーと。
調べていくと、上から順番にmigrateされるため、questionsテーブルを作成する際にはusersテーブルが存在しないため、エラーになるとのことでした。そこでマイグレーションファイルのファイル名を変更しました。
1 2 3 |
down 001 Devise create users down 002 Create questions down 003 Create answers |
このファイル名でmigrateすると上から順番に実行されて無事にmigrateすることができました!
本番環境はRenderを使っていますが、そこでもエラーが・・・。questionsコントローラーだけ完成した際に何個かデータベースにデータが残っていてそれが原因のようです。
削除するためにファイルに小細工を。
1 2 3 4 5 6 7 8 9 |
#!/usr/bin/env bash # exit on error set -o errexit bundle install bundle exec rake assets:precompile bundle exec rake assets:clean #bundle exec rake db:migrate DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:migrate:reset |
最後の行、これでデータを一度削除すると無事にデプロイできました。
このまま残しておくと、デプロイされる度にデータベースがリセットされるのでちゃんと直しておきましょう。
1 2 3 4 5 6 7 8 9 |
#!/usr/bin/env bash # exit on error set -o errexit bundle install bundle exec rake assets:precompile bundle exec rake assets:clean bundle exec rake db:migrate #DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:migrate:reset |
明日からも開発がんばりますー!