我通过编辑db/seed.rb
文件和执行rake db:seed
命令将一行数据播种到我的表中。在不知不觉中,我在该行中输入了一些错误信息。所以我想删除之前添加的数据行。是否有相同的 rake 命令rake db:rollback
用于rake db:migrate
.
问问题
8909 次
1 回答
5
这有几个方面:
1:您想在数据库中没有其他数据时更改种子数据:
您应该rake db:seed
在更新 seed.rb 文件后简单地重做。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
于 2013-02-19T12:48:04.913 回答