Могу ли я сохранить пользовательскую версию object_changes в paper_trail? - PullRequest
0 голосов
/ 11 мая 2018

При использовании paper_trail (https://github.com/paper-trail-gem/paper_trail), существует ли более эффективный способ хранения object_changes? Особенно для столбцов jsonb, большой объем данных хранится в таблице, поскольку он хранит все значение поля до и после изменение было сделано, даже если это был один ключ в большом объекте.

Прямо сейчас, когда я отправляю его в представление, я использую Hashdiff (https://github.com/liufengyun/hashdiff), чтобы найти конкретные вещи, которые были изменены, но я должен запускать это каждый раз, когда загружается представление, плюс есть большая нагрузка на БД, так как все изменения полей сохраняются каждый раз - версии - моя самая большая таблица.

Есть ли возможность хранить Hashdiff непосредственно в object_changes и выгружать его в представление при каждой его загрузке? Это сделало бы вещи намного быстрее и уменьшило бы нагрузку на БД.

1 Ответ

0 голосов
/ 19 июня 2018

Эшвин и я добавили эту функцию в PR 1102 , выпущенную в 9.2. Вот запись в журнале изменений:

## 9.2.0 (2018-06-09)

### Added

- [#1093](https://github.com/paper-trail-gem/paper_trail/pull/1093) -
  `PaperTrail.config.object_changes_adapter` - Expert users can write their own
  adapter to control how the changes for each version are stored in the
  object_changes column. An example of this implementation using the hashdiff
  gem can be found here:
  [paper_trail-hashdiff](https://github.com/hashwin/paper_trail-hashdiff)
...