2011-01-11 17 views
0

Ich versuche, eine Migrationsdatei für eine HABTM Beziehung zu gründen, aber wenn ich die Migration ausführen ich die folgende Fehlermeldung erhalten:Rails 3: HABTM Migration, Primärschlüssel Ausgabe

Primary key is not allowed in a has_and_belongs_to_many join table (parts_vehicles).

Hier ist meine Migrationsdatei (20110111035950_create_parts_vehicles.rb):

class CreatePartsVehiclesJoinTable < ActiveRecord::Migration 
    def self.up 
    create_table :parts_vehicles, :id => false do |t| 
     t.integer :part_id 
     t.integer :vehicle_id 
    end 
    end 

    def self.down 
    drop_table :parts_vehicles 
    end 
end 

The documentation Beispiel Zustände :id => false zu verwenden, um einen Primärschlüssel zu deaktivieren erzeugt wird, aber ich bin immer noch den Fehler.

+0

Es sieht richtig aus. Führen Sie 'rake db: migrate: status 'aus, um sicherzustellen, dass diese Migration' down 'ist. –

+0

Ja, es ist richtig. Es fing an zu arbeiten, als ich meine DB fallen ließ und Migrationen neu lief. –

Antwort

1

1.) Sie sind Klassenname der gleiche wie der Migration Name sein sollte:

class CreatePartsVehicles < ActiveRecord::Migration 

2.) Haben Sie migrieren? Versuchen Sie, Ihre db (Rake db: drop) fallen und remigrieren (Rake db: migrieren)

+0

Der Klassenname einer Migration spielt hier keine Rolle. –

+0

war nicht sicher. sicher ist sicher. Ich habe das Gefühl, dass er gerade nicht richtig migriert, obwohl – sethvargo

+0

Ich habe eine spezielle Rake-Aufgabe zu tun, db: drop: alle db: migrieren und db: seed, die anscheinend einige Probleme hatte. Es begann zu arbeiten, nachdem ich jeden Schritt manuell ausgeführt habe. –