Ich erstelle SNS wie Twitter und Fb. Ich habe der Post-Funktion eine Schaltfläche zum Löschen hinzugefügt ... ** Ich kann den Post nicht löschen! !! ** **.
Im Detail können Sie nur einen Beitrag löschen. Veröffentlichen Sie ein Foto in einem Beitrag (nur wenn es in ein Beitragsmodell und ein Bildmodell unterteilt ist) Wenn Sie einen Beitrag kommentieren, können Sie ihn nicht löschen. ..
** [Heutige Charaktere] ** (Übergeordnetes) Beitragsmodell → Modell zum Speichern von Beiträgen (Untergeordnetes) Bildmodell → Ein Modell, das Bilder speichert, die mit Posts verknüpft sind (Untergeordnetes) Kommentarmodell → Modell zum Speichern von Kommentaren für Beiträge
Mit anderen Worten, wenn ein Wert in das ** untergeordnete Modell (Bildmodell, Kommentarmodell) ** eingegeben wird, das in das ** Post-Modell ** verschachtelt ist, kann der Post-Datensatz nicht gelöscht werden.
Werfen wir einen Blick auf den tatsächlichen Code.
post.rb
class Post < ApplicationRecord
belongs_to :user
has_many :comments
has_many :images
end
Es ist eine unkonventionelle Post-Model-Assoziation. Wenn dies jedoch unverändert bleibt, kann das übergeordnete Modell nicht gelöscht werden, wenn ein Wert in das untergeordnete Modell eingegeben wird. Denn wenn der Elternteil verschwindet, ** verschwindet der Elternteil des Kindes **. .. Es ist natürlich lol
Mit anderen Worten, wenn Sie ein Elternteil löschen, können Sie es so einstellen, dass das Kind ebenfalls gelöscht wird.
Setzen wir ** "abhängige :: zerstören" ** im Modell. abhängig ... Übersetzt ist es "abhängig". Ich denke, es ist einfach, sich ein Bild zu machen.
Das zum Zeitpunkt der Zuordnung festgelegte Modell wird gelöscht, wenn die Klasse gelöscht wird. Ich weiß nicht, was du sagst, ich werde es unten schreiben.
post.rb
class Post < ApplicationRecord
belongs_to :user
has_many :comments, dependent: :destroy
has_many :images, dependent: :destroy
end
Hast du irgendwie verstanden? Sie haben das ** Bildmodell ** und ** Kommentarmodell ** in der ** Post-Klasse ** festgelegt. Wenn das Post-Modell (Post) gelöscht wird, wird auch das Modell (Bild, Kommentar) gelöscht, für das in der Zuordnung ** abhängig :: zerstören ** festgelegt ist.
Ich möchte, dass Sie diesbezüglich etwas wissen. Tatsächlich ist diese ** abhängige :: Zerstörung ** keine Einstellung zum Löschen von untergeordneten Modellen.
Schreiben wir zum Beispiel Folgendes in das Kommentarmodell.
comment.rb
belongs_to :post, dependent: :destroy
In diesem Fall wird beim Löschen des Kommentars ** auch der Beitrag gelöscht **.
Ich werde es noch einmal sagen. ** Modelle, die zum Zeitpunkt der Zuordnung konfiguriert wurden, werden gelöscht, wenn die Klasse gelöscht wird. ** **.
Vielen Dank, dass Sie meine schlechte Erklärung bis zum Ende gelesen haben. Wenn Sie Fehler oder Ergänzungen haben, würde ich mich freuen, wenn Sie einen Kommentar abgeben könnten.
Mehr und mehr.
Recommended Posts