Eine Abhilfe besteht darin, eine Variable in der Klasse zu setzen und ihren Wert in der after_save-Datei zu überprüfen.
- Prüfen Sie es zuerst. (wenn var)
- Weisen Sie ihm einen "false"-Wert zu, bevor Sie update_attribute aufrufen.
- update_attribute aufrufen.
- Weisen Sie ihm einen 'true'-Wert zu.
- Ende
Auf diese Weise wird nur zweimal versucht zu speichern. Dies wird wahrscheinlich zweimal auf Ihre Datenbank zugreifen, was wünschenswert sein kann oder auch nicht.
Ich habe das vage Gefühl, dass da etwas eingebaut ist, aber das ist eine ziemlich narrensichere Methode, um einen bestimmten Punkt der Rekursion in so ziemlich jeder Anwendung zu verhindern. Ich würde auch empfehlen, sich den Code noch einmal anzuschauen, da es wahrscheinlich ist, dass alles, was Sie in after_save tun, auch in before_save getan werden sollte. Es kann vorkommen, dass dies nicht der Fall ist, aber das ist eher selten.