У нас была та же проблема, и, поскольку это интересная тема, я разработаю ее на основе нашего выбора / опыта.
Я думаю, что концепция более сложная, чем то, что было подчеркнуто в текущем ответе.
Поскольку речь идет об отчетах, я предполагаю, что сценарий использования - это обновление таблиц хранилища данных, а не «универсальное» приложение (это предположение / различие имеет решающее значение).
Во-первых,идея «легко отладить» не является [обязательно] верной.В нашем случае это на самом деле контрпродуктивно.
В достаточно сложных приложениях некоторые типы обратных вызовов (обновления хранилищ данных / миллионы строк кода / команда среднего (или более) размера) просто невозможно поддерживатьПоскольку база данных / способы обновления базы данных настолько разнообразны, что будет практически невозможно отлаживать пропущенные обратные вызовы.
Триггеры не обязательно должны быть спроектированы как «сложная и быстрая» логика.В частности, триггеры также могут работать как низкоуровневая логика обратного вызова, поэтому они являются простыми и экономичными: они просто перенаправляют события обновления обратно в код rails.
Чтобы завершить в упомянутом случае использования обратные вызовы railsследует избегать, как чумы.
Эффективный и эффективный дизайн состоит в том, чтобы иметь триггеры RDBMS, добавляющие записи в таблицу очередей, и систему очередей на стороне рельсов, которая воздействует на них.
(Поскольку этот пост старый, мне любопытно, какой опыт был у ОП)