Изменения нулевого объекта происходят из-за событий касания для пропущенных атрибутов.Единственное решение, которое я придумала, - отслеживать только версии при создании, обновлении и уничтожении.
Я также обнаружил, что у нас есть дубликаты записей версий.Мы включили 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