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