30 lines
647 B
Ruby
30 lines
647 B
Ruby
# frozen_string_literal: true
|
|
|
|
module VersionedDescription
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
attr_accessor :saved_description_version
|
|
|
|
has_many :description_versions
|
|
|
|
after_update :save_description_version
|
|
end
|
|
|
|
private
|
|
|
|
def save_description_version
|
|
self.saved_description_version = nil
|
|
|
|
return unless saved_change_to_description?
|
|
|
|
unless description_versions.exists?
|
|
description_versions.create!(
|
|
description: description_before_last_save,
|
|
created_at: created_at
|
|
)
|
|
end
|
|
|
|
self.saved_description_version = description_versions.create!(description: description)
|
|
end
|
|
end
|