2010-12-16 162 views
1

Dans l'un de mes modèles, j'utiliser un primaire non standard qui est gérée dans le fichier de migration comme ceci:clés primaires non standard dans les bases de données de test Rails

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

et

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

Maintenant, quand Je lance rake test le schéma est copié dans la base de données de test mais sans mettre la clé primaire (item_id_1, item_id_2) dans la base de données de test.

Quelqu'un pourrait-il s'il vous plaît aider comment cela peut être atteint?

Répondre

0

Rails décharges informations dans ce schema db/schema.rb. Vérifiez ce fichier, mais votre propre SQL ne sera probablement pas là. Vous pouvez le mettre à dumps sql, mais je ne sais pas si votre propre SQL sera inclus:

ActiveRecord::Base.schema_format = :sql 
+0

Oui, il comprenait mon propre SQL! Maintenant, la structure lors de l'exécution « test de coupe » de la base de données de développement est déversée dans db/development_structure.sql. Ce fichier est utilisé pour recréer la base de données de test qui correspond maintenant exactement à la base de données de développement. – dasboe

1

Rails n'a pas beaucoup de soutien pour les clés primaires composites.

essayer de mettre la structure sql de votre base de données comme ceci:

rake db:structure:dump 

Il devrait créer un fichier comme db/development_structure.sql

faire ensuite cette option pour charger ce fichier dans votre base de données de test:

rake db:test:clone_structure