2010-10-23 37 views

Trả lời

150

Bạn có thể xóa tất cả mọi thứ và tạo cơ sở dữ liệu + hạt với cả hai:

  1. rake db:reset: tải từ schema.rb
  2. rake db:drop db:create db:migrate db:seed: tải từ di cư

Hãy chắc chắn rằng bạn không có các kết nối tới db (máy chủ rails, máy khách sql ..) hoặc db sẽ không bị mất.

schema.rb là một bản chụp của tình trạng hiện tại của cơ sở dữ liệu của bạn được tạo ra bởi:

rake db:schema:dump 
+0

Cảm ơn bạn đã nhắc mọi người tắt bất kỳ máy chủ nào để đảm bảo DB bị xóa đúng cách. – aardvarkk

5

Nếu bạn không cảm thấy như thả và tái tạo lại toàn bộ công việc chỉ để tải lại dữ liệu của bạn, bạn có thể sử dụng MyModel.destroy_all (hoặc delete_all) trong tệp seed.db để xóa bảng trước khi các câu lệnh MyModel.create!(...) tải dữ liệu. Sau đó, bạn có thể làm lại thao tác db:seed lặp đi lặp lại. (Rõ ràng, điều này chỉ ảnh hưởng đến các bảng bạn đã tải dữ liệu vào, không phải phần còn lại của chúng.)

Có một "hack bẩn" tại https://stackoverflow.com/a/14957893/4553442 để thêm hoạt động "khử mầm" tương tự như di chuyển lên và xuống. ..

+0

thông minh, tái tạo mọi thứ từ đầu mỗi khi mất nhiều thời gian cho tôi – m02ph3u5

2

Tính đến Rails 5, công cụ rake commandline đã được bí danh như rails vì vậy bây giờ

rails db:reset thay vì rake db:reset

sẽ chỉ làm việc cũng

Các vấn đề liên quan