[Ruby on Rails] Informationen zum Active Record-Rückruf

Was ist ein Rückruf?

Aus der Rails-Anleitung

Rückrufe sind Methoden, die zu bestimmten Zeitpunkten während des Lebenszyklus eines Objekts aufgerufen werden. Mit Rückrufen können Sie Code schreiben, der immer ausgeführt wird, wenn ein Active Record-Objekt erstellt / gespeichert / aktualisiert / gelöscht / validiert / aus der Datenbank geladen usw. wird.

Active Record-Rückrufe generieren Ereignisse vor und nach dem Aktualisieren oder Löschen eines Active Record-Objekts, z. B. eines Modells, und dessen Status ändert sich. In diesem Fall kann jede Verarbeitung durchgeführt werden.

So registrieren Sie einen Rückruf

Beispiel) Geben Sie ein Protokoll aus, wenn Mitgliedsdaten gelöscht werden.

app/models/member.rb


class Member < ApplicationRecord
Abkürzung
  after_destroy do
    Rails.logger.info "Member is deleted: #{self.attributes}"
  end
end

Die Verarbeitung in after_destroy wird ausgeführt, wenn das Mitglied gelöscht wird.

Art

Im Folgenden finden Sie einige Beispiele für Rückrufe, die in Active Record verfügbar sind. Before_ kann die Verarbeitung vor dem Trigger definieren, around_ kann die Verarbeitung vor und nach dem Trigger definieren und after_ kann die Verarbeitung nach dem Trigger definieren. Wenn es sich um before_validation handelt, erfolgt es vor dem Validierungsprozess, der durch Erstellen und Aktualisieren ausgeführt wird.

Rückrufpunkt create update destroy
before_validation ×
after_validation ×
before_save ×
around_save ×
after_save ×
before_create × ×
around_create × ×
after_create × ×
before_update ×
around_update ×
after_update ×
before_destroy × ×
around_destroy × ×
after_destroy × ×

Andere Anwendungsbeispiele

Während der Entwicklung wollte ich manchmal das Verhalten überprüfen, wenn der Löschvorgang fehlschlug, sodass ich es wie folgt zum Fehlschlagen bringen konnte.

app/models/member.rb


class Member < ApplicationRecord
Abkürzung
  before_destroy { throw(:abort) }
end

Die Rückrufverarbeitung kann absichtlich gestoppt werden, indem "throw (: abort)" geschrieben wird.

Dinge, auf die Sie in Ihrem Rückruf achten sollten

Referenz

Recommended Posts

[Ruby on Rails] Informationen zum Active Record-Rückruf
Ruby on Rails Lernrekord -2020.10.03
Ruby on Rails Lernrekord -2020.10.05
Ruby on Rails Lernrekord -2020.10.09
Ruby on Rails lernen Rekord-2020.10.07 ②
Ruby on Rails lernen Rekord-2020.10.07 ①
Ruby on Rails Lernrekord -2020.10.06
[Rails] Über aktiven Hash
Ruby on Rails Elementary
Ruby on Rails Grundlagen
Ruby On Rails Association
[Ruby On Rails] Über RubyAws :: Sigv4 :: Errors :: MissingCredentialsError
Portfolioerstellung Ruby on Rails
[Ruby on Rails] Löschen Sie s3-Bilder mit Active Strage
[Ruby on Rails] Debuck (bindend.pry)
Brechen Sie die Ruby on Rails-Migration ab
Zusammenfassung der Ruby on Rails-Validierung
Ruby on Rails Grundlegendes Memorandum
Was ist Rails Active Record?
Ruby on Rails-Datensatzsuche, erstellen Sie die Methode find_or_create_by, wenn nicht
Ein Hinweis zum Seed-Feature von Ruby on Rails
[Hinweis] Über das Fizz_Buzz-Problem (Funktionsweise von Ruby on Rails)
[Ruby on Rails] Leseversuch (: [],: Schlüssel)
Ruby on Rails-Variablen, konstante Zusammenfassung
Installation von Ruby + Rails unter Ubuntu 18.04 (rbenv)
[Ruby on Rails] Paging-Funktion eingeführt
Grundkenntnisse in Ruby on Rails
Progate Ruby on Rails5 Rückblick
Verwendung von Ruby on Rails
Ruby on Rails Japanisch-Englisch kompatibler i18n
(Ruby on Rails6) Gepostete Inhalte "löschen"
[Ruby on Rails] CSV-Ausgabefunktion
Ruby on Rails 6.0-Umgebungskonstruktionsnotiz
[Ruby on Rails] Erstellung der Bestätigungsseite
Ruby On Rails entwickelt Routing-Konflikte
[Ruby on Rails] Implementierung der Kommentarfunktion
[Ruby on Rails] DM, Chat-Funktion
[Ruby on Rails] Praktische Hilfsmethode
[Ruby on Rails] Stoppen Sie "Looping bis ..."
Über Schienen 6
[Ruby on Rails] Einführung der Anfangsdaten
[Ruby on Rails] Suchfunktion (nicht ausgewählt)
[Rails] Hinzufügen der Ruby On Rails-Kommentarfunktion
Ruby on Rails6 Praktischer Leitfaden cp13 ~ cp15 [Memo]
[Ruby on Rails] Test mit RSpec anzeigen
[Ruby on Rails] Codeprüfung mit Rubocop-Airbnb
[Ruby on Rails] 1 Modell CRUD (Routing Main)
Ruby on Rails-Installationsmethode [Mac Edition]
Modell [Ruby on Rails], Befehl für Controller-Terminal
Befehl zum Erstellen / Löschen von Ruby on Rails-Modellen