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

时间:2011-10-31 10:23:48

标签: ruby-on-rails

如何删除下面列出的迁移的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

1 个答案:

答案 0 :(得分:1)

如果您同时创建数据库表,则销毁表将破坏数据。

如果:bar是唯一的,您可以通过bar找到并销毁该对象。

# up
Foo.create([{:bar => 1},{:bar => 2},{:bar => 3})

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

<强>被修改

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

如果您真的需要在独家迁移中执行此操作,那么您的创建工作将与您的创建工作成比例。

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

一些有用的链接: