Open1
【Rails】db:reset は db:drop → db:create → db:migrate → db:seed と等価ではない
Ruby on Rails において、
db:reset
とdb:drop→db:create→db:migration→db:seed
はよく似ています。
しかし、db:resetはschema.rb
を参照する、という点は大きな違いです。
それによりschema.rb
に問題があった場合それを引き継いでしまうことがあります。
結論
- db:resetはschema.rbを参照してデータベーススキーマを再構築しますが、db:drop → db:create → db:migrate → db:seedはマイグレーションファイルを基にスキーマを再構築します。
- schema.rbに問題がある場合、db:resetはその問題を引き継ぎますが、db:drop → db:create → db:migrate → db:seedプロセスはマイグレーションファイルが正しい限り、その問題を引き継ぎません。
- したがって、schema.rbの状態に自信がない場合や、マイグレーションファイルに基づいてデータベースを完全に再構築したい場合は、後者のプロセスを選択するのが適切です。