Da Observers offiziell aus Rails 4.0 entfernt wurden , bin ich gespannt, was andere Entwickler an ihrer Stelle verwenden. (Abgesehen von der Verwendung des extrahierten Edelsteins.) Während Beobachter sicherlich missbraucht wurden und manchmal leicht unhandlich werden konnten, gab es viele Anwendungsfälle außerhalb des Cache-Löschens, bei denen sie von Vorteil waren.
Nehmen Sie zum Beispiel eine Anwendung, die Änderungen an einem Modell verfolgen muss. Ein Beobachter kann problemlos nach Änderungen an Modell A suchen und diese Änderungen mit Modell B in der Datenbank aufzeichnen. Wenn Sie auf Änderungen in mehreren Modellen achten möchten, kann ein einzelner Beobachter damit umgehen.
In Rails 4 bin ich gespannt, welche Strategien andere Entwickler anstelle von Beobachtern verwenden, um diese Funktionalität wiederherzustellen.
Persönlich neige ich zu einer Art "Fat Controller" -Implementierung, bei der diese Änderungen in der Erstellungs- / Aktualisierungs- / Löschmethode jedes Controller-Modells verfolgt werden. Während es das Verhalten jedes Controllers leicht aufbläht, hilft es bei der Lesbarkeit und dem Verständnis, da sich der gesamte Code an einem Ort befindet. Der Nachteil ist, dass es jetzt Code gibt, der sehr ähnlich ist und auf mehrere Controller verteilt ist. Das Extrahieren dieses Codes in Hilfsmethoden ist eine Option, aber Sie haben immer noch Aufrufe für diese Methoden, die überall verstreut sind. Nicht das Ende der Welt, aber auch nicht ganz im Sinne von "Skinny Controllern".
ActiveRecord-Rückrufe sind eine weitere mögliche Option, die ich persönlich nicht mag, da sie meiner Meinung nach dazu neigen, zwei verschiedene Modelle zu eng miteinander zu verbinden.
Wenn Sie in der Rails 4-Welt ohne Beobachter einen neuen Datensatz erstellen müssten, nachdem ein anderer Datensatz erstellt / aktualisiert / zerstört wurde, welches Entwurfsmuster würden Sie verwenden? Fat Controller, ActiveRecord-Rückrufe oder etwas ganz anderes?
Danke dir.