Module: FastVersioning::PaperTrailExtensions

Extended by:
ActiveSupport::Concern
Defined in:
lib/fast_versioning/paper_trail_extensions.rb

Instance Method Summary collapse

Instance Method Details

#create_fast_versionsObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/fast_versioning/paper_trail_extensions.rb', line 10

def create_fast_versions
  if item.respond_to?(:fast_version_for, true)
    value_change = FastVersioning::ValueChange.new(version: self)

    item.send(:fast_version_for).each do |tracked_attribute|
      name = tracked_attribute.name
      new_value = value_change.value_became(name)
      prev_value = value_change.value_was(name)

      # Skip if value unchanged.
      next if prev_value == new_value

      fast_versions.create(
        item_id: item_id,
        item_type: item_type,
        whodunnit_id: whodunnit&.to_i,
        whodunnit_type: whodunnit_type,
        name: name,
        value: new_value,
        prev_value: prev_value,
        meta: tracked_attribute.meta,
        created_at: created_at
      )
    end
  end
  true
end

#recreate_fast_versions!Object



38
39
40
41
# File 'lib/fast_versioning/paper_trail_extensions.rb', line 38

def recreate_fast_versions!
  fast_versions.destroy_all
  create_fast_versions
end