paper_trail версии для сохранения драгоценных камней с object_changes nil - PullRequest
0 голосов
/ 20 февраля 2019

Мы только начали использовать PaperTrail gem и заметили, что 75% записей в таблице версий имеют ноль для столбца object_changes.Есть идеи, почему это происходит и как мы можем это остановить?

Использование Rails 5.1 и PaperTrail 10.1.

1 Ответ

0 голосов
/ 21 февраля 2019

Изменения нулевого объекта происходят из-за событий касания для пропущенных атрибутов.Единственное решение, которое я придумала, - отслеживать только версии при создании, обновлении и уничтожении.

Я также обнаружил, что у нас есть дубликаты записей версий.Мы включили PaperTrail для всех моделей, поместив приведенное ниже значение в ApplicationRecord, что привело к созданию дублированных версий, если класс унаследован от другого.т.е. если у вас есть class Foo < Bar и вы делаете Bar.create, это создаст 2 идентичные записи версии.

Начальная версия в ApplicationRecord

def self.inherited(subclass)
  super
  subclass.send(:has_paper_trail)
end

Окончательная версия

def self.inherited(subclass)
  classes_to_skip = %w[Foo]
  attributes_to_skip = [:bar_at]
  on_actions = [:create, :update, :destroy]

  super
  unless classes_to_skip.include?(subclass.name)
    subclass.send(:has_paper_trail, on: on_actions, ignore: attributes_to_skip)
  end
end
...