Tôi đã tạo một hàng dữ liệu vào bảng của mình bằng cách chỉnh sửa db/seed.rb
tệp và thực hiện lệnh rake db:seed
. Vô tình, tôi đặt một số thông tin sai vào hàng đó. Vì vậy, tôi muốn xóa hàng dữ liệu đã thêm trước đó. Có lệnh cào nào giống như rake db:rollback
cho rake db:migrate
không.Hoàn tác dữ liệu đã được tạo trước đó trong Rails
Trả lời
Có một vài khía cạnh sau:
1: Bạn muốn thay đổi dữ liệu hạt giống khi không có dữ liệu khác hiện diện trong cơ sở dữ liệu:
Bạn chỉ cần thực hiện lại các rake db:seed
sau khi cập nhật hạt giống .rb. Đảm bảo bạn có MyModel.delete_all
trước khi bạn cố thêm bất kỳ thứ gì vào mô hình đó.
2: Bạn muốn thay đổi dữ liệu hạt giống, nhưng có dữ liệu khác được thêm vào cơ sở dữ liệu
Điều này khó hơn một chút. Thường thì điều đơn giản nhất để làm ở đây là để tự thay đổi dữ liệu với một trong hai sql-báo cáo thô, hoặc với việc sử dụng các công cụ như PhpPpAdmin, PhpMyAdmin, vv
Bây giờ, có possiby một cách hack này lại với nhau và đó sẽ là một số voodoo trong tệp seed.rb. Vì vậy, bạn có thể chạy rake db:seed deseed=true
, sau đó trong seed.rb của bạn:
if ENV['deseed']
#Do your deseeding action here
else
#Do your seeding here.
end
Bạn thậm chí có thể nhận được thật điên và làm điều gì đó như thế này:
deseed = ENV['desee']
#DANGER: Dirty hacks upcoming:
deseed? myModelCall = MyModel.method(:destroy_all): myModelCall = MyModel.method(:create)
myModelCall.call :user_id_or_whatevs => 23 #this creates or deletes a MyModel entity with the given parameters
#NOTE this might not work in all cases and I would not necessarily recommend doing this.
#<3uby
- 1. xóa thẻ CVS đã được tạo trước đó
- 2. Hoàn tác hợp nhất đã được đẩy
- 3. Trình tạo gói Rails: cách hoàn tác gói gói?
- 4. Truy cập dữ liệu trước đó trong một tham gia
- 5. Hoàn tác giàn giáo trong Rails
- 6. Thêm dữ liệu vào trường cơ sở dữ liệu MySQL đã có dữ liệu trong đó
- 7. Đẩy ghi đè dữ liệu trước đó trong mảng
- 8. Hoàn tác tab đã đóng trong Eclipse?
- 9. Hoàn tác quản lý với dữ liệu chính
- 10. Cách chuyển dữ liệu biểu mẫu trước đó tới hàm tạo của DynamicForm trong FormWizard
- 11. Tắt hoàn tác việc tạo/xóa NSManagedObject
- 12. Git-Flow hoàn tác chi nhánh đã hoàn thành
- 13. Git (TortoiseGit) - Làm cách nào để hoàn nguyên một tệp về bản sửa đổi trước đó và sau đó hoàn tác việc hoàn nguyên?
- 14. Hoàn tác tạo chi nhánh trong Mercurial
- 15. Theo dõi các tác vụ đã hoàn thành trong ExecutorService
- 16. Hộp dữ liệu đã được tổng hợp trước/nhóm trong R
- 17. Rails tự động gán id đó đã tồn tại
- 18. dòng Thao tác dữ liệu
- 19. LINQ to SQL - Cơ sở dữ liệu đã tạo ra khóa đã được sử dụng
- 20. Ruby on Rails - Tôi có thể sửa đổi dữ liệu trước khi được lưu không?
- 21. Làm cách nào để tạo "hoàn tác" trong C++?
- 22. jQuery cách hoàn tác thay đổi đã chọn
- 23. hoàn nguyên về cấu hình trước đó từ dòng lệnh?
- 24. Tạo nguồn cấp dữ liệu RSS trong Rails 3
- 25. TortoiseSVN - Hoàn tác hoàn nguyên
- 26. Làm cách nào để biết liệu nội dung nào đó đã được đọc trong Rails để thông báo
- 27. Rails 3 - xác thực một trong hai trường đã được hoàn thành
- 28. Hoàn tác xóa trong GIT
- 29. cách tạo XML từ lược đồ XML trong dữ liệu java và nguồn cấp dữ liệu trong đó?
- 30. Cách tạo tác vụ nền trước?
Drop cơ sở dữ liệu, tái tạo và gieo rắc một lần nữa. :) –
@Sergio Tulentsev: Tôi đồng ý. Nhưng tôi phải giữ dữ liệu đã có trước khi tôi làm hạt giống cuối cùng. Tôi chỉ muốn loại bỏ các dữ liệu hạt giống cuối cùng. Bạn có thể giúp tôi làm điều đó không. –
Không có nhiệm vụ cào cho điều đó. Tìm và xóa dữ liệu theo cách thủ công. Nếu bạn dự đoán nó xảy ra lần nữa, hãy viết một kịch bản. –