2013-02-19 18 views
9

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

+2

Drop cơ sở dữ liệu, tái tạo và gieo rắc một lần nữa. :) –

+0

@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. –

+2

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. –

Trả lời

3

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 
Các vấn đề liên quan