2010-12-16 6 views
1

:今非標準プライマリキー私はこのような移行ファイルに扱われる非標準のプライマリ使用私のモデルの一つで

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

1

Railsはコンポジットプライマリキーをサポートしていません。

はこのように、データベースのSQL構造をダンプしてみてください。

rake db:structure:dump 

それはあなたのテスト・データベースにそのファイルをロードするためにこれを行うその後のdb/development_structure.sql

のようなファイルを作成する必要があります。

rake db:test:clone_structure 
関連する問題