Beim Löschen eines Modells mit einem externen Schlüssel in Rails fiel es mir schwer, es einfach durch Schreiben der Routing-, Controller- und Ansichtsdatei zu implementieren, sodass ich es ausgeben werde.
Angenommen, Sie möchten ein Modell mit dem Namen item löschen, das item_purchase enthält und Daten zu Produktkäufen als externen Schlüssel verknüpft.
Dieser Artikelkauf hat eine Benutzer-ID, die der Käufer ist, und eine Artikel-ID, die der gekaufte Artikel ist.
Wenn Sie den Artikel einfach löschen, wird in item_purchase ein Datensatz angezeigt, in dem nur item_id fehlt.
Wenn Sie einen Artikel löschen, beschreiben wir ihn daher, damit der zugehörige item_purchase-Datensatz selbst gelöscht werden kann.
Fügen wir zunächst der Modellzuordnung eine zusätzliche Beschreibung hinzu.
models/item.rb
has_one :item_purchase, foreign_key: :item_id, dependent: :destroy
models/item_purchase.rb
belongs_to :item, optional: true
Ich werde es hier nicht vorstellen, aber da der Benutzer auch verlinkt sein sollte, vergessen Sie nicht, dies auch zu beschreiben.
Danach können Sie die Destroy-Methode wie gewohnt im Controller definieren.
Recommended Posts