From 0f90b90928b11820ad9238ce44a2b98cde126550 Mon Sep 17 00:00:00 2001 From: Mike Dillon Date: Wed, 18 May 2016 08:53:06 -0700 Subject: [PATCH] Log errors when versions can't be created --- lib/paper_trail/has_paper_trail.rb | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/lib/paper_trail/has_paper_trail.rb b/lib/paper_trail/has_paper_trail.rb index 7e515d67..041914c4 100644 --- a/lib/paper_trail/has_paper_trail.rb +++ b/lib/paper_trail/has_paper_trail.rb @@ -397,8 +397,12 @@ module PaperTrail end add_transaction_id_to(data) version = send(self.class.versions_association_name).create merge_metadata(data) - update_transaction_id(version) - save_associations(version) + if version.errors.any? + log_version_errors(version, :update) + else + update_transaction_id(version) + save_associations(version) + end end end @@ -476,10 +480,14 @@ module PaperTrail } add_transaction_id_to(data) version = self.class.paper_trail_version_class.create(merge_metadata(data)) - send("#{self.class.version_association_name}=", version) - send(self.class.versions_association_name).send :load_target - update_transaction_id(version) - save_associations(version) + if version.errors.any? + log_version_errors(version, :destroy) + else + send("#{self.class.version_association_name}=", version) + send(self.class.versions_association_name).send :load_target + update_transaction_id(version) + save_associations(version) + end end end @@ -646,6 +654,13 @@ module PaperTrail version.save end end + + def log_version_errors(version, action) + version.logger.warn( + "Unable to create version for #{action} of #{self.class.name}##{id}: " + + version.errors.full_messages.join(", ") + ) + end end end end