Rails Observer Альтернативы для 4.0

С наблюдателями официальноудалено из Rails 4.0Мне интересно, что другие разработчики используют вместо них. (Кроме использования извлеченного драгоценного камня.) Хотя Обозреватели, безусловно, подвергались жестокому обращению и иногда могли легко стать громоздкими, было много вариантов использования, помимо простой очистки кэша, где они были полезны.

Возьмем, к примеру, приложение, которое должно отслеживать изменения в модели. Наблюдатель может легко отслеживать изменения в модели A и записывать эти изменения с помощью модели B в базу данных. Если вы хотите отслеживать изменения в нескольких моделях, то один наблюдатель может справиться с этим.

В Rails 4 мне любопытно, какие стратегии используют другие разработчики вместо Observers для воссоздания этой функциональности.

Лично я склоняюсь к некой реализации «жирного контроллера», где эти изменения отслеживаются в методе создания / обновления / удаления контроллера каждой модели. Хотя он слегка раздувает поведение каждого контроллера, он помогает в удобочитаемости и понимании, поскольку весь код находится в одном месте. Недостатком является то, что теперь существует очень похожий код, разбросанный по нескольким контроллерам. Извлечение этого кода в вспомогательные методы является опцией, но вы все равно будете вызывать эти методы повсюду. Не конец света, но не совсем в духе "тощих контролеров".

Обратные вызовы ActiveRecord - это еще один возможный вариант, хотя лично мне он не нравится, так как, на мой взгляд, он слишком тесно связывает две разные модели.

Так что в Rails 4, мире без наблюдателей, если бы вам пришлось создавать новую запись после создания / обновления / уничтожения другой записи, какой шаблон проектирования вы бы использовали? Толстые контроллеры, обратные вызовы ActiveRecord или что-то еще целиком?

Спасибо.

Ответы на вопрос(12)

Ваш ответ на вопрос