如何在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强制转换:种子数据