通过编辑db/seed.rb文件并执行rake db:seed命令,我已将一行数据填充到表中。不知不觉中,我在该行中输入了一些错误的信息。所以我想删除以前添加的数据行。是否有相同的rake命令,例如rake db:rollbackrake db:migrate

最佳答案

有两个方面:

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

10-08 06:36
查看更多