[RUBY] Ich war süchtig nach der Aufzeichnung des zugehörigen Modells

Arbeitsumgebung

Rails '5.2.3' Ruby '2.7.1' PostgreSQL

Wovon ich süchtig war

Ich habe versucht, das registrierte Element zu löschen, während ich den Vorgang in der lokalen Umgebung beim Erstellen der Anwendung zur Freigabe von Überprüfungen überprüft habe.

ActiveRecord::InvalidForeignKey in ItemsController#destroy PG::ForeignKeyViolation: ERROR: update or delete on table "reviews" violates foreign key constraint "fk_rails_5350d1b47c" on table "comments" DETAIL: Key (id)=(6) is still referenced from table "comments". : DELETE FROM "reviews" WHERE "reviews"."id" = $1

Error ,. Es gibt keine Kommentartabelle mit dem Namen "auf Tabelle" Kommentare ". Ich war besorgt darüber, aber als ich die App zum ersten Mal erstellte, dachte ich darüber nach, eine Kommentarfunktion zur Überprüfung zu erstellen. Ist es jedoch nicht erforderlich, eine einseitige Kommentarfunktion zur Überprüfung zu haben? Es gab eine Vergangenheit, in der ich die Implementierung eingestellt habe, weil ich dachte (ich habe es vergessen). Ich dachte jedoch, dass die Kommentartabelle gelöscht wurde und ich süchtig danach war.

Süchtig machender Hintergrund

Die Beziehung besteht darin, dass das Element mehrere Bewertungen hat, während eine App zum Teilen von Bewertungen in Rails erstellt wird.

item.rb


has_many :category_items, dependent: :destroy
has_many :categories, through: :category_items
has_many :reviews, dependent: :destroy
has_many :favorites, dependent: :destroy
accepts_nested_attributes_for :category_items

review.rb


belongs_to :user
belongs_to :item
has_many  :notifications, dependent: :destroy

Überlegen Sie, was den Fehler verursacht hat

Von hier aus ist es eine Überlegung, die die Anfänger dachten. Ich würde es begrüßen, wenn Sie darauf hinweisen könnten, ob es anders ist. Während Sie versuchen, den Artikel zu löschen, wird auch die mit dem Artikel verknüpfte Überprüfung gelöscht. has_many: reviews, abhängige :: destroy Dies. Dieses Mal wird das Element gelöscht → Überprüfung verschwindet → Kommentartabelle bleibt erhalten

review.rb


(Kürzung)
has_many  :comments, dependent: :destroy

Ich dachte, dass es ein Phänomen ist, dass die Überprüfung nicht gelöscht werden kann, weil es keine Beschreibung gibt, sodass der Artikel nicht gelöscht werden kann.

Wie gehe ich mit diesem Fehler um?

Zunächst einmal ist es eine Bestätigung, dass die Kommentartabelle wirklich erhalten bleibt. Aktualisiert db / schema.rb mit Rails db: schema: dump. Danach, wenn Sie sich schema.rb ansehen

schema.rb


 create_table "comments", force: :cascade do |t|
   (Kürzung) 
  end

Ich hatte Kommentare ... Löschen Sie nicht benötigte Tabellen.

Kommentartabelle gelöscht

Erstellen Sie eine Migrationsdatei und schreiben Sie Folgendes

def change
 drop_table :comments
end

Auf Wiedersehen mit Schienen db: migrieren. Sie können jetzt Bewertungen für beide Artikel löschen! !!

Zusammenfassung

Ich habe es lange Zeit damit geschrieben, aber die Lektion, die ich in diesem Fall gelernt habe, ist, dass die Maschine nicht verraten wird und es die erste Person ist, die daran zweifelt. Die Annahme ist nicht gut. Es ist mein erster Beitrag, daher gibt es viele Dinge, bei denen ich mir nicht sicher bin, aber ich hoffe, dass sie jemandem helfen.

Recommended Posts

Ich war süchtig nach der Aufzeichnung des zugehörigen Modells
Ich war süchtig nach Laradock + VSCode + xdebug
Ich war süchtig nach der Rollmethode
Ich war süchtig nach dem Spring-Batch-Test
Ich war süchtig nach der API-Version min23 von registerTorchCallback
Aufgenommen, weil ich süchtig nach der Standardeingabe der Scannerklasse war
[Circle CI] Ich war süchtig nach dem automatischen Test von Circle CI (Rails + MySQL) [Memo]
Ich war süchtig nach NoSuchMethodError in Cloud-Endpunkten
Ich war süchtig danach, sbt zu starten
Wovon ich bei der Einführung der JNI-Bibliothek süchtig war
Ich war süchtig danach, die Update-Anweisung in MyBatis zu wiederholen
Was ich mit der Redmine REST API süchtig gemacht habe
Die Geschichte, nach der ich beim Einrichten von STS süchtig war
Der Teil, dem ich in "Einführung in Ajax in Java-Webanwendungen" von NetBeans verfallen war
Beachten Sie, dass ich von den Einstellungen des Android-Projekts von IntelliJ IDEA abhängig war
Ich war süchtig danach, in @ SpringApplicationConfiguration-> @SpringBootTest umzuschreiben
Über die Sache, dass ich süchtig danach war, wie man Hashmap benutzt
Ein Memo, das nüchtern von der Anfrage nach mehrteiligen / Formulardaten abhängig war
Memorandum: Wovon ich süchtig war, als ich auf die Accounting Freee API traf
[Rails] Ich war süchtig nach den Nginx-Einstellungen, als ich Action Cable verwendete.
Eine Geschichte, der ich beim Testen der API mit MockMVC verfallen war
Ich war süchtig nach einem einfachen Test von Jedis (Java-> Redis-Bibliothek)
Probleme, denen ich beim Erstellen der Digdag-Umgebung mit Docker verfallen war
Ich war süchtig nach Scrollview, weil ich nicht auf die UIView mit variabler Größe tippen konnte
Ich war süchtig nach Unit-Tests mit dem Pufferoperator in RxJava
Ich war süchtig nach RXTX mit Sierra
Ich möchte den Inhalt der Absicht var_dump
Ich war süchtig danach, onActivityResult () mit DialogFragment zu machen
Eine Geschichte, der ich mit der automatischen Starteinstellung von Tomcat 8 unter CentOS 8 zweimal verfallen war
Ich war süchtig danach, vom Docker-Container aus keine Verbindung zu AWS-S3 herstellen zu können
Ich war ein wenig süchtig nach dem S3-Prüfsummenvergleich, machen Sie sich also eine Notiz.
Ich wurde von der Dunkelheit Romajis verschluckt, als ich versuchte, meinen Namen in Romaji umzuwandeln
05. Ich habe versucht, die Quelle von Spring Boot zu löschen
Ich habe versucht, die Kapazität von Spring Boot zu reduzieren
Ich möchte die Antwort der Janken-App wissen
[Rails] Ich weiß nicht, wie ich das Modell verwenden soll ...
Ich möchte den Namen des Posters des Kommentars anzeigen
Ich war süchtig nach getXxxx von ResultSet, weil es ein primitiver Typ ist (Java)
Ich möchte die Bildlaufposition von UITableView zurückgeben!
Was ich beim Update auf Spring Boot 1.5.12 behoben habe ・ Wovon ich süchtig war
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
Wovon ich süchtig war, als ich rspec auf Schienen benutzte
Ich war süchtig danach, default_url_options mit der Einführung von Rails zu setzen
Ich möchte ein bestimmtes Modell von ActiveRecord ReadOnly erstellen
Ich möchte die Protokollausgabeeinstellung von UtilLoggingJdbcLogger ändern
Ich habe die grundlegende Grammatik von Ruby kurz zusammengefasst
Ich habe versucht, eine Umgebung mit WSL2 + Docker + VSCode zu erstellen
Ich war seltsamerweise süchtig danach, Javas Stream-API mit Scala zu verwenden
[Ruby] Ich möchte die Reihenfolge der Hash-Tabelle umkehren
Eine Geschichte, die mich während des Komponententests von der impliziten Typkonvertierung von ActiveRecord abhängig machte