Ecto tut: Ссылка
Sie unterscheiden sich deutlich von den Rails: Sie erhalten Changesets und müssen diese zurückgeben und müssen für die Datenkonsistenz verwendet werden (verwenden Sie sie nicht zum Senden von E-Mails und was nicht).
Ab Ecto 2.0 wurden Callbacks vollständig entfernt.
So, wie jetzt Rückrufe zu behandeln ?. Hier sind zwei Möglichkeiten
Für before_
Callbacks können Sie Changeset selbst verwenden. Einer der Gründe, warum Callbacks entfernt wurden, war, dass viele Entwickler in vielen Fällen auf Callbacks angewiesen waren, in denen Changesets ausreichen würden . Wenden Sie einfach die gewünschte Funktion auf Ihren Änderungssatz an,
Eine andere Möglichkeit besteht darin, mehrere Repo-Operationen mit Ecto.Multi zu gruppieren. Aus den Dokumenten
Ecto.Multi ermöglicht das Packen von Operationen, die zusammen ausgeführt werden sollen (in einer einzigen Datenbanktransaktion), und bietet eine Möglichkeit, die Vorgänge in der Warteschlange zu inspizieren, ohne sie tatsächlich auszuführen. Jede Operation erhält einen eindeutigen Namen und identifiziert das Ergebnis oder hilft, den Fehlerort zu identifizieren, falls dieser auftritt. Wenn Sie also eine Gruppe von datenbezogenen Vorgängen gleichzeitig ausführen möchten, können Sie
Multi
verwenden. Sowohlbefore_
als auchafter_
Rückrufe können hier ersetzt werden.
Ein Beispiel wäre
%Vor%Führen Sie es mit
aus %Vor%Sie müssen daran denken, dass Sie datenbezogene Abfragen ausführen müssen und keine anderen Aufgaben wie das Senden einer E-Mail ausführen müssen. Dazu können Sie einfach eine Musteranpassung für das Ergebnis durchführen und die entsprechende Aktion ausführen. Lets sat Sie wollten eine Mail senden, wenn die Transaktion erfolgreich war und eine Fehlermeldung angezeigt wird, falls nicht
%Vor%Quelle:
Tags und Links elixir phoenix-framework