在Rails中撤消以前播种的数据

Raj*_*tan 10 ruby-on-rails undo seed

我通过编辑db/seed.rb文件和执行rake db:seed命令将一行数据播种到我的表中.在不知不觉中,我把一些错误的信息放到那一行.所以我想删除以前添加的数据行.是否有同样喜欢任何rake命令rake db:rollbackrake db:migrate.

Aut*_*ico 5

有两个方面:

1:要在数据库中不存在其他数据时更改种子数据:

您应该rake db:seed在更新seed.rb文件之后简单地重做。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
Run Code Online (Sandbox Code Playgroud)

您甚至可能会发疯并执行以下操作:

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
Run Code Online (Sandbox Code Playgroud)