Module: PaperTrailViewer::Rollback

Defined in:
lib/paper_trail_viewer/rollback.rb

Defined Under Namespace

Classes: Result

Class Method Summary collapse

Class Method Details

.call(version_class: PaperTrail::Version, version_id:) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/paper_trail_viewer/rollback.rb', line 2

def self.call(version_class: PaperTrail::Version, version_id:)
  PaperTrailViewer.allow_rollback or raise 'Rollback not allowed'

  version = version_class.find(version_id)

  if version.event == 'create'
    version.item_type.constantize.find(version.item_id).destroy!
    Result.new(true, 'Rolled back newly-created record by destroying it.')
  else
    version.reify.save!
    Result.new(true, 'Rolled back changes to this record.')
  end

rescue StandardError => e
  Result.new(false, "#{e.class}: #{e.message}")
end