1# frozen_string_literal: true 2 3module VersionedDescription 4 extend ActiveSupport::Concern 5 6 included do 7 attr_accessor :saved_description_version 8 9 has_many :description_versions 10 11 after_update :save_description_version 12 end 13 14 private 15 16 def save_description_version 17 self.saved_description_version = nil 18 19 return unless saved_change_to_description? 20 21 unless description_versions.exists? 22 description_versions.create!( 23 description: description_before_last_save, 24 created_at: created_at 25 ) 26 end 27 28 self.saved_description_version = description_versions.create!(description: description) 29 end 30end 31