2010-12-16 4 views
1

In einem meiner Modelle verwende ich einen Nicht-Standard-Primär, die in der Migrationsdatei wie folgt behandelt wird:Nicht-Standard Primärschlüssel in Rails Testdatenbanken

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

und

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

Nun, wenn Ich starte rake test das Schema wird in die Testdatenbank kopiert, aber ohne den Primärschlüssel (item_id_1, item_id_2) in der Testdatenbank zu setzen.

Könnte jemand bitte helfen, wie dies erreicht werden kann?

Antwort

0

Rails speichert die Schemainformationen in db/schema.rb. Überprüfen Sie diese Datei, aber Ihre eigene SQL wird wahrscheinlich nicht da sein. Sie können es SQL dump, aber ich weiß nicht, ob Sie Ihre eigenen SQL enthalten sein wird:

ActiveRecord::Base.schema_format = :sql 
+0

Ja, es enthielt meine eigene SQL! Jetzt, wenn "Rake-Test" ausgeführt wird, wird die Struktur der Entwicklungsdatenbank in db/development_structure.sql abgelegt. Diese Datei wird verwendet, um die Testdatenbank neu zu erstellen, die nun genau mit der Entwicklungsdatenbank übereinstimmt. – dasboe

1

Rails nicht viel Unterstützung für Composite Primärschlüssel hat.

Versuchen Sie, die SQL-Struktur Ihrer Datenbank wie dieses Dumping:

rake db:structure:dump 

Es sollte eine Datei wie db/development_structure.sql

Dann ist diese erstellen Sie die Datei in Ihre Testdatenbank zu laden:

rake db:test:clone_structure 
Verwandte Themen