Câu trả lời:
Rake db: di chuyển ở trên chạy bất kỳ di chuyển đang chờ xử lý nào trên môi trường phát triển và cập nhật db / lược đồ.rb. Rake db: test: load tạo lại cơ sở dữ liệu thử nghiệm từ db / lược.rb hiện tại. Trong các lần thử tiếp theo, bạn nên chạy db: test: chuẩn bị, vì trước tiên, nó sẽ kiểm tra các lần di chuyển đang chờ xử lý và cảnh báo bạn một cách thích hợp.
- http://guides.rubyonrails.org/testing.html
Về cơ bản, nó xử lý nhân bản cơ sở dữ liệu để bạn không phải chạy di chuyển so với kiểm tra để cập nhật cơ sở dữ liệu kiểm tra.
Cụ thể, rake db:test:prepare
sẽ làm như sau:
Đó là, nó sẽ xem db/schema.rb
tệp của bạn để xác định xem có bất kỳ sự di chuyển nào tồn tại trong dự án của bạn chưa được chạy hay không. Giả sử không có di chuyển nổi bật, sau đó nó sẽ làm trống cơ sở dữ liệu và tải lại dựa trên nội dung của db/schema.rb
tệp.
rake db: test: chuẩn bị là một giải pháp tốt cho các vấn đề PG như thế này .
Tên PG PG :: Không xác định: LRI: không tồn tại mối quan hệ với tên và quy ước Rails chính xác "nơi tôi không thể thực hiện rake db:migrate RAILS_ENV=production
Ví dụ, khi bạn không thể tạo cơ sở dữ liệu kiểm tra cho một lỗi được thảo luận ở đây : "PG không tồn tại người dùng quan hệ lỗi không xác định được"
Tất cả đều mắc lỗi này "PG :: UndiniteTable: ERROR: mối quan hệ xxxxx không tồn tại
rake db:test:prepare
bây giờ không được dùng nữa