2010-12-16 66 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