Po oficjalnym usunięciu Observers z Rails 4.0 jestem ciekawy, czego używają inni programiści w ich miejsce. (Poza używaniem wydobytego klejnotu.) Podczas gdy obserwatorzy byli z pewnością wykorzystywani i czasami mogli łatwo stać się nieporęczni, było wiele przypadków użycia poza zwykłym czyszczeniem pamięci podręcznej, w których były one korzystne.
Weźmy na przykład aplikację, która musi śledzić zmiany w modelu. Obserwator może łatwo obserwować zmiany w Modelu A i rejestrować te zmiany w Modelu B w bazie danych. Jeśli chcesz obserwować zmiany w kilku modelach, pojedynczy obserwator może sobie z tym poradzić.
W Rails 4 jestem ciekaw, jakie strategie używają inni programiści zamiast Observers, aby odtworzyć tę funkcjonalność.
Osobiście skłaniam się ku pewnego rodzaju implementacji „grubego kontrolera”, w której te zmiany są śledzone w metodzie tworzenia / aktualizacji / usuwania kontrolera każdego modelu. Chociaż nieznacznie powiększa zachowanie każdego kontrolera, pomaga w czytelności i zrozumieniu, ponieważ cały kod znajduje się w jednym miejscu. Wadą jest to, że istnieje teraz bardzo podobny kod rozproszony w kilku kontrolerach. Wyodrębnienie tego kodu do metod pomocniczych jest opcją, ale nadal pozostają wszędzie wywołania tych metod. To nie koniec świata, ale też niezupełnie w duchu „chudych kontrolerów”.
Wywołania zwrotne ActiveRecord to kolejna możliwa opcja, chociaż osobiście nie lubię, ponieważ moim zdaniem ma tendencję do łączenia dwóch różnych modeli zbyt blisko siebie.
Więc w świecie Rails 4, no-Observers, gdybyś musiał stworzyć nowy rekord po utworzeniu / aktualizacji / zniszczeniu innego rekordu, jakiego wzorca projektowego byś użył? Grube kontrolery, wywołania zwrotne ActiveRecord czy coś zupełnie innego?
Dziękuję Ci.