С Observers официально удален из Rails 4.0 мне интересно, что другие разработчики используют вместо них. (Кроме использования извлеченного драгоценного камня.) Хотя Обозреватели, несомненно, подвергались жестокому обращению и иногда могли легко стать громоздкими, было много вариантов использования, помимо простой очистки кеша, где они были полезны.
Возьмем, к примеру, приложение, которое должно отслеживать изменения в модели. Наблюдатель может легко отслеживать изменения в модели A и записывать эти изменения с помощью модели B в базу данных. Если вы хотите следить за изменениями в нескольких моделях, то один наблюдатель может справиться с этим.
В Rails 4 мне любопытно, какие стратегии используют другие разработчики вместо Observers для воссоздания этой функциональности.
Лично я склоняюсь к некой реализации «жирного контроллера», где эти изменения отслеживаются в методе создания / обновления / удаления контроллера каждой модели. Хотя он слегка раздувает поведение каждого контроллера, он помогает в удобочитаемости и понимании, поскольку весь код находится в одном месте. Недостатком является то, что теперь существует очень похожий код, разбросанный по нескольким контроллерам. Извлечение этого кода в вспомогательные методы является опцией, но вы все равно будете вызывать эти методы повсюду. Не конец света, но не совсем в духе "тощих контролеров".
Обратные вызовы ActiveRecord - это еще один возможный вариант, хотя лично мне он не нравится, так как, на мой взгляд, он слишком тесно связывает две разные модели.
Так что в Rails 4, мире без наблюдателей, если бы вам пришлось создавать новую запись после создания / обновления / уничтожения другой записи, какой шаблон проектирования вы бы использовали? Толстые контроллеры, обратные вызовы ActiveRecord или что-то еще целиком?
Спасибо.