如何基于开发数据库模式重新创建测试夹具

时间:2010-09-23 22:44:58

标签: ruby-on-rails ruby-on-rails-3 unit-testing fixtures

情况:我使用生成脚手架在新的Rails项目中设置我的对象。除了进行一些迁移之外,我还通过添加和重命名列等直接编辑MySQL表。现在我无法运行测试,因为自动生成的灯具与数据库架构不对应。也许它们基于原始定义加上迁移,而我的迁移不能完全描述新结构。

我发现我可以使用“rake db:test:clone_structure”复制测试数据库中的表(db:test:prepare显然是从迁移中创建的吗?),但是我无法弄清楚如何获取从开发模式而不是从迁移(或正在发生的任何事情)创建的fixture。

我看到有一个Fixtures.create_fixtures方法,但我会把它放在哪里以及如何使用它来重新生成我的所有灯具?

2 个答案:

答案 0 :(得分:3)

使用rails时,你永远不会这样做 - “通过添加和重命名列来直接编辑MySQL表” 您创建迁移

http://guides.rubyonrails.org/migrations.html

答案 1 :(得分:1)

我完全同意您不应在不使用迁移的情况下更改数据库,但重新创建灯具仍然是人们不时遇到的问题。我找到的最佳解决方案是:

http://snippets.dzone.com/posts/show/2525