Sulla migrazione ottengo il seguente messaggio di errore:PG :: UndefinedTable: ERRORE: relazione "..." non esiste
PG::UndefinedTable: ERROR: relation "actioncodes" does not exist
: ALTER TABLE "organizations" ADD CONSTRAINT "fk_rails_4ecaa2493e"
FOREIGN KEY ("actioncode_id")
REFERENCES "actioncodes" ("id")
Ho il seguente file di migrazione per le organizzazioni:
class CreateOrganizations < ActiveRecord::Migration
def change
create_table :organizations do |t|
t.string :name, null: false, limit: 40
t.references :actioncode, index: true, foreign_key: true
t.boolean :activated
t.datetime :activated_at
t.timestamps null: false
end
end
end
E per Actioncodes ho il file di migrazione:
class CreateActioncodes < ActiveRecord::Migration
def change
create_table :actioncodes do |t|
t.string :code, null: false, limit: 20
t.string :description, limit: 255
t.timestamps null: false
end
end
end
class AddIndexToActioncodesCode < ActiveRecord::Migration
def change
add_index :actioncodes, :code, unique: true
end
end
il file modello di organizzazione include: belongs_to :actioncode
.
Mentre il file del modello actioncodes include: has_many :organizations
.
Qualche idea di cosa potrebbe causare il messaggio di errore?
Se rimuovo index: true, foreign_key: true
dal file di migrazione, migra senza errori. E quando sostituisco quella linea con la linea errata t.references :actioncode_id, index: true, foreign_key: true
, dà l'errore sotto, dove l'ultima riga ("id") suggerisce Rails in qualche modo sembra avere problemi con il nome della tabella?
PG::UndefinedTable: ERROR: relation "actioncode_ids" does not exist
: ALTER TABLE "organizations" ADD CONSTRAINT "fk_rails_604f95d1a1"
FOREIGN KEY ("actioncode_id_id")
REFERENCES "actioncode_ids" ("id")
Il nome della tabella è codice di azione. Ho aggiunto il suo file di migrazione al post originale – Nick
Sembra che la migrazione di 'CreateOrganizations' venga eseguita prima che venga eseguito' CreateActioncodes'. - 'CreateActioncodes' deve essere eseguito per primo assicurando che esista la tabella' actioncodes'. –
Potete forse consigliare come dovrei cambiare questo? Ho controllato e il codice SQL conferma effettivamente che le organizzazioni vengono create prima che Actioncodes sia. – Nick