У меня есть вопрос класса, в котором много связанных моделей. На одной странице моего приложения я перечисляю сводку всех текущих вопросов с различной информацией из связанных записей. В конечном счете, это хэш значений, которые я затем просто распечатываю в строку в стиле csv (далее я буду называть это «хэшем строки»)
Теперь у меня есть требование показывать только изменения вопросов (или связанных с ними данных) за определенный период. В настоящее время я обдумываю лучший способ сделать это. Вот некоторые идеи, которые у меня были до сих пор, я буду рад любым отзывам, мыслям, предложениям и т.
1) Подход 1 - act_as_audited Это была моя первая мысль, так как я использовал это раньше в других приложениях. Однако проблема с aaa заключается в том, что он отслеживает только изменения в данных записи (т.е. ему все равно, изменяются ли ассоциации). Таким образом, я мог бы также проверить все связанные записи, но затем попытка собрать воедино то, что изменилось, связав вместе разные записи аудита, звучит как кошмар.
2) Сохраните старый и новый хэш в сериализованных полях: т.е. - когда кто-то переходит на страницу вопроса/редактирования, я вычисляю хэш текущей строки и сохраняю его в сериализованном поле «old_data» в таблице вопросов. Затем, после того, как они сохранят вопрос, я вычисляю новый хэш текущей строки и сохраняю его в сериализованном поле «new_data» в таблице вопросов. Кроме того, я сравниваю два сериализованных хэша и сохраняю различия в другом сериализованном хеш-поле «изменения». Теперь, чтобы сделать свой отчет, я просто ищу вопросы, обновленные за последние x дней, и вывожу данные об их изменениях.
3) создать представление - я создаю представление, которое соответствует данным, которые я хочу вывести (т.е. оно объединяет все данные, которые я извлекаю в свой отчет). Затем я отслеживаю изменения в представлении - как-то. Я не уверен, как именно я бы это сделал.
Я сейчас склоняюсь ко второму варианту.
Любые другие мысли/комментарии? благодарен за любые предложения - макс.