我有一个迁移轨道,插入一个记录进入数据库。的类型取决于这一记录。由于最高反射率的清除的数据库之前,每个例子中,这种记录丢失,而且似乎永远不会被创建以来最高反射率似乎并不生成的数据库自迁移。什么是最好的方式创造/重建这个记录的数据库?它将使用前(:所有的)?

有帮助吗?

解决方案

它不是最高反射率的清除的数据库,这是该轨道的耙:db:准备任务的副本的 架构 (但不是内容)的开发数据库进入你的*_test数据库。

是的,你可以使用 before(:all), 如交易是缠绕着每一个个别例子-但是,一个简单的具的文件也将做同样的工作。

(那里有一个更复杂的一般解决这个问题:迁移到一个面向服务的架构中,你的'开发者'和'test'服务都将完全单独的实例。然后,你可以点你的测试数据库的配置,以开发数据库在你的测试服务,禁止瑞克:数据库:准备,并建立自己的测试服务迁移作为你的再生。然后你就可以测试你的迁移和数据的转换。)

其他提示

我喜欢做的是在数据库db / migration中创建一个名为data的文件夹,然后在其中放置yml fixtures,在你的例子中就是category.yml

然后我使用以下

创建迁移
def self.up
 down
 directory = File.join( File.dirname(__FILE__), "data" )
 Fixtures.create_fixtures( directory, "categories" )
end

def self.down
  Category.delete_all
end
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top