Muster klage beim finanzgericht

Der after_find Rückruf wird aufgerufen, wenn Active Record einen Datensatz aus der Datenbank lädt. after_find wird vor after_initialize aufgerufen, wenn beide definiert sind. Wie bei Validierungen können wir auch das Aufrufen einer Rückrufmethode von der Zufriedenheit eines bestimmten Prädikats abhängig machen. Wir können dies mit den Optionen :if und :unless Options tun, die ein Symbol, ein Proc oder ein Array annehmen können. Sie können die Option :if verwenden, wenn Sie angeben möchten, unter welchen Bedingungen der Rückruf aufgerufen werden soll. Wenn Sie die Bedingungen angeben möchten, unter denen der Rückruf nicht aufgerufen werden soll, können Sie die Option :unless verwenden. Es gibt zwei zusätzliche Rückrufe, die durch den Abschluss einer Datenbanktransaktion ausgelöst werden: after_commit und after_rollback. Diese Rückrufe ähneln dem after_save Rückrufs, außer dass sie erst ausgeführt werden, nachdem Datenbankänderungen entweder festgeschrieben oder zurückgesetzt wurden. Sie sind am nützlichsten, wenn Ihre aktiven Datensatzmodelle mit externen Systemen interagieren müssen, die nicht Teil der Datenbanktransaktion sind. Wenn eine Transaktion abgeschlossen ist, werden die after_commit oder after_rollback Rückrufe für alle Modelle aufgerufen, die innerhalb dieser Transaktion erstellt, aktualisiert oder zerstört wurden. Wenn jedoch innerhalb eines dieser Rückrufe eine Ausnahme ausgelöst wird, wird die Ausnahme in die Höhe gesprudeln, und alle verbleibenden after_commit oder after_rollback Methoden werden nicht ausgeführt.

Wenn Ihr Rückrufcode eine Ausnahme auslösen könnte, müssen Sie ihn daher innerhalb des Rückrufs retten und behandeln, damit andere Rückrufe ausgeführt werden können. Bei Rückrufen sollte darauf geachtet werden, dass Attribute nicht aktualisiert werden. Vermeiden Sie z. B. die Ausführung von update(Attribut: “value”) und ähnlichem Code während Rückrufen. Dies kann den Status des Modells ändern und zu unerwarteten Nebenwirkungen während des Commits führen. Stattdessen sollten Sie versuchen, Werte in der before_create oder früheren Rückrufen zuzuweisen. before_destroy Rückrufe sollten vor abhängig platziert werden: :destroy-Zuordnungen (oder verwenden Sie die Option “Präparat: true”), um sicherzustellen, dass sie ausgeführt werden, bevor die Datensätze von dependent: :destroy gelöscht werden. Die Option :on gibt an, wann ein Rückruf ausgelöst wird. Wenn Sie die Option :on nicht bereitstellen, wird der Rückruf für jede Aktion ausgelöst. Rückrufe ermöglichen es Ihnen, Logik vor oder nach einer Änderung des Zustands eines Objekts auszulösen.