Jawaban:
Rake db: migrate di atas menjalankan semua migrasi yang tertunda di lingkungan pengembangan dan memperbarui db / schema.rb. Rake db: test: load membuat ulang database pengujian dari db / schema.rb saat ini. Pada percobaan berikutnya, adalah ide yang baik untuk menjalankan db: test: prep, karena ini pertama kali memeriksa migrasi yang tertunda dan memperingatkan Anda dengan tepat.
- http://guides.rubyonrails.org/testing.html
Pada dasarnya ini menangani kloning database sehingga Anda tidak perlu menjalankan migrasi terhadap pengujian untuk memperbarui database pengujian.
Secara khusus, rake db:test:prepare
akan melakukan hal berikut:
Artinya, akan terlihat db/schema.rb
file Anda untuk menentukan apakah ada migrasi yang ada di proyek Anda yang belum dijalankan. Dengan asumsi tidak ada migrasi yang belum diselesaikan, ini akan mengosongkan database dan memuatnya kembali berdasarkan konten db/schema.rb
file.
rake db: test: persiapkan adalah solusi yang baik untuk masalah PG seperti ini .
“PG :: UndefinedTable: ERROR: relasi tidak ada” dengan penamaan dan konvensi Rails yang benar "yang tidak bisa saya jalankan begitu saja rake db:migrate RAILS_ENV=production
Ketika, misalnya Anda tidak dapat membuat database pengujian untuk bug yang dibahas di sini : "Pengguna relasi error yang tidak ditentukan PG tidak ada"
Semua di sekitar kesalahan ini "PG :: UndefinedTable: ERROR: relasi xxxxx tidak ada”
rake db:test:prepare
sekarang tidak digunakan lagi.