簡體   English   中英

在 Rails 中撤消先前播種的數據

[英]Undo previously seeded data in Rails

我通過編輯db/seed.rb文件並執行rake db:seed命令將一行數據播種到我的表中。 在不知不覺中,我在該行中輸入了一些錯誤信息。 所以我想刪除之前添加的數據行。 是否有任何類似rake db:rollback for rake db:migrate的 rake 命令。

這有幾個方面:

1:當數據庫中沒有其他數據時,您想要更改種子數據:

您應該在更新seed.rb文件后重做rake db:seed 在嘗試向該模型添加任何內容之前,請確保您具有MyModel.delete_all

2:您想要更改種子數據,但是還有其他數據添加到數據庫中

這有點難。 經常在這里做最簡單的事情是無論是原始SQL語句手動更改數據,或者使用的工具,如PhpPpAdminphpMyAdmin的等。


現在,有可能一種方法來破解這一點,那就是在seed.rb文件中做一些伏都教。 所以你可以運行rake db:seed deseed=true ,然后在你的seed.rb中:

if ENV['deseed'] 
   #Do your deseeding action here
else
   #Do your seeding here.
end

你甚至可以變得瘋狂,並做這樣的事情:

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

當我播種我的數據時,我遇到了類似的問題。 事實上,我運行了兩次種子命令,但找不到撤銷第二個種子的方法。 但是,我必須運行rails db:reset命令,然后再次運行rails db:seed命令,這為我解決了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM