2010-12-16 36 views
1

在我的模型之一,我使用的是在迁移文件来处理这样的非标准主:在Rails的测试数据库非标准的主键

create_table item_similarities, :id => false do |t| 

execute "ALTER TABLE item_similarities ADD constraint pk_item_similarities " + 
     "PRIMARY KEY (item_id_1, item_id_2)" 

现在,当我运行rake test将架构复制到测试数据库中,但未在测试数据库中设置主键(item_id_1,item_id_2)。

任何人都可以请帮助这可以实现吗?

回答

0

Rails将模式信息转储到db/schema.rb中。检查该文件,但你自己的SQL可能不会在那里。您可以将其设置为转储SQL,但我不知道是否将包含自己的SQL:

ActiveRecord::Base.schema_format = :sql 
+0

是的,它包括我自己的SQL!现在,将运行“rake test”的开发数据库结构转储到db/development_structure.sql中。该文件用于重新创建与开发数据库完全匹配的测试数据库。 – dasboe 2010-12-16 12:15:24

1

Rails对复合主键没有太多的支持。

尝试倾销数据库的SQL结构是这样的:

rake db:structure:dump 

应该创造这样的db/development_structure.sql

然后做这个那个文件加载到你的测试数据库中的文件:

rake db:test:clone_structure