Frage

Ich bin mit einem STI-Modell mit einer einzigen „Konten“ Tabelle für den Benutzer und Techniker (das heißt Benutzer

... 8) Fehler: test_the_truth (Usertest): Active :: StatementInvalid: PGError: ERROR: relation "Techniker" existiert nicht : DELETE FROM "Techniker" ...

Im Wesentlichen der Standard-Framework erkennt nicht, dass die Techniker und Anwender-Tabellen (oder „Beziehungen“, wie PostgreSQL sie nennt) nicht existieren und in der Tat soll Konten werden aliased.

Irgendwelche Ideen? Ich bin relativ neu in RoR und ich bin ratlos, wie man dieses Problem beheben, ohne STI alle zusammen herauszureißen.

War es hilfreich?

Lösung

Es stellte sich heraus, dass das Problem der Anwesenheit von Grund war:

./ Test / Einrichtung / technicians.yml   ./test/fixtures/users.yml

Dies macht Sinn, da der Rahmen in die Lage erwartete Daten in ähnlicher Weise benannten Tabellen einzufügen.

Andere Tipps

Ich habe ein ähnliches Problem hat, die durch das Entfernen der YAML-Datei für das Kind Modell gelöst wurde. Im Wesentlichen für jede Schiene Blick auf den Armaturen in / test / Einrichtung geschaffen / und zu versuchen, die Tabellen zu leeren, so dass er sie für Sie nachladen kann.

In meinem Fall hatte ich das Skript / generieren Modell Befehl ausführen, die automatisch eine neue Gerät erzeugt. Dann änderte es das Modell von der richtigen Elternklasse erben. Nun, da das Gerät noch existierte, Schienen versuchen von Kind zu löschen, bevor die Geräte geladen werden.

Wenn Sie wirklich Daten müssen vorab zu laden, sollten Sie die übergeordneten Modelle Befestigung verwenden und das Typ-Feld auf die richtigen Modellnamen gesetzt.

  • Haben Sie sicher, dass Ihre Konten Tabelle einen ‚Typ‘ Spalte enthält? Sie benötigen ein, um STI Arbeit zu machen.
  • Ich habe einige Datenbankkompatibilität Probleme mit einer Spalte tatsächlich hat ‚Typen‘ genannt und habe schaltete gelegentlich zu ‚Art‘, das zu lindern. Das könnte das Problem sein; Versuchen Sie, self.inheritance_column = „Art“ in der Basisklasse (Account) und sehen, ob das hilft.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top