[英]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語句手動更改數據,或者使用的工具,如PhpPpAdmin , phpMyAdmin的等。
現在,有可能一種方法來破解這一點,那就是在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.