在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