我应该如何删除通过self.up填充的样本数据



如何在self中删除样本数据。

下面列出的两个迁移的Down方法
class FooSampleData < ActiveRecord:Migration
  def self.up
     Foo.create(:bar => 1)
     Foo.create(:bar => 2)
     Foo.create(:bar => 3)
  end
  def self.down
  end
end
class FooSampleDataV2 < ActiveRecord:Migration
  def self.up
     Foo.create(:bar => 4)
     Foo.create(:bar => 5)
     Foo.create(:bar => 6)
  end
  def self.down
  end
end

如果您同时创建数据库表,那么销毁表将会销毁数据。

如果:bar是唯一的,你可以找到by bar并销毁对象。

# up
Foo.create([{:bar => 1},{:bar => 2},{:bar => 3})
# down
Foo.where(:bar => [1,2,3]).each { |foo| foo.destroy }

我不知道你的情况。种子通常用于启动应用程序。如果您处于增量开发(使用部署)中,通常在我们创建模型时包含初始数据,而不是在您的示例中显示的排他性迁移中包含初始数据。

如果你真的需要在一个独占的迁移中做,你的删除工作将与你的创建工作成比例。

在我的项目中,我避免在迁移中添加数据。

一些有用的链接:

    Rails指南:迁移
  • Rails强制转换:种子数据

最新更新