Оскільки спостерігачів офіційно видалено з Rails 4.0 , мені цікаво, що використовують інші розробники замість них. (За винятком використання видобутого дорогоцінного каменю.) Хоча спостерігачів, безумовно, зловживали і часом могли легко стати недоброзичливими, було багато випадків використання поза просто очищенням кешу, де вони принесли користь.
Візьмемо, наприклад, додаток, якому потрібно відстежувати зміни в моделі. Спостерігач міг легко спостерігати за змінами в моделі A і записувати ці зміни за допомогою моделі B в базі даних. Якщо ви хотіли спостерігати за змінами в декількох моделях, то з цим впорався б один спостерігач.
У Rails 4 мені цікаво, які стратегії використовують інші розробники замість спостерігачів, щоб відтворити цю функціональність.
Особисто я схиляюся до свого роду "жирового контролера", де ці зміни відслідковуються в методі створення / оновлення / видалення контролера кожної моделі. Хоча це трохи полегшує поведінку кожного контролера, це допомагає в читанні та розумінні, оскільки весь код знаходиться в одному місці. Мінусом є те, що зараз існує дуже схожий на кілька кодів код. Витяг цього коду в допоміжні методи - це варіант, але ви все ще залишаєтеся дзвінками до цих методів. Не кінець світу, але не зовсім в дусі "худих контролерів".
Відклики викликів ActiveRecord - це ще один можливий варіант, хоча один, який мені особисто не подобається, як це, як правило, поєднує дві різні моделі занадто тісно разом, на мій погляд.
Отож, у світі Rails 4, не спостерігачів, якщо вам довелося створити новий запис після створення / оновлення / знищення іншої записи, яку модель дизайну ви б використали? Контролери жиру, зворотні виклики ActiveRecord чи щось інше цілком?
Дякую.