我通过编辑db/seed.rb
文件并执行rake db:seed
命令将一行数据播种到我的表中。在不知不觉中,我把一些错误的信息放到那一行。所以我想删除以前添加的数据行。对rake db:rollback
rake db:migrate
{{1}}是否有相同的rake命令。
答案 0 :(得分:4)
这有几个方面:
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