Na migracji pojawia się następujący komunikat o błędzie:PG :: UndefinedTable: ERROR: relacja "..." nie istnieje
PG::UndefinedTable: ERROR: relation "actioncodes" does not exist
: ALTER TABLE "organizations" ADD CONSTRAINT "fk_rails_4ecaa2493e"
FOREIGN KEY ("actioncode_id")
REFERENCES "actioncodes" ("id")
Mam następujący plik migracji dla organizacji:
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
I Actioncodes mam plik migracji:
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
plik modelu organizacja obejmuje: belongs_to :actioncode
.
Podczas gdy plik modelu actioncodes zawiera: has_many :organizations
.
Jakieś pojęcie, co może być przyczyną komunikatu o błędzie?
Po usunięciu index: true, foreign_key: true
z pliku migracji migracja przebiega bezbłędnie. A kiedy zamieniam tę linię na nieprawidłową linię t.references :actioncode_id, index: true, foreign_key: true
, podaje ona błąd poniżej, gdzie ostatnia linia ("ids") sugeruje, że Rails jakoś wydaje się mieć problem z nazwą tabeli?
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")
Nazwa tabeli to kody akcji. Dodałem plik migracji do oryginalnego posta. – Nick
Wygląda na to, że migracja 'CreateOrganizations' jest uruchamiana przed wykonaniem' CreateActioncodes'. - Najpierw należy uruchomić "CreateActioncodes", upewniając się, że istnieje tabela "actioncodes". –
Czy możesz poradzić, jak powinienem to zmienić? Sprawdziłem i kod SQL rzeczywiście potwierdza Organizacje są tworzone przed kodem Action. – Nick