class Snaps::Snapshot
Public Class Methods
create(record, options, &block)
click to toggle source
# File lib/snaps/snapshot.rb, line 3 def self.create(record, options, &block) new(record, options).create(&block) end
Public Instance Methods
create() { |copy| ... }
click to toggle source
# File lib/snaps/snapshot.rb, line 7 def create copy = record.dup if record.respond_to?(:created_at) copy.created_at = record.created_at end yield(copy) if block_given? Tag.suppress do copy.save end copy.snaps_tag!(options[:tag]) if options[:tag] snapshot_components(copy) copy end
Private Instance Methods
each_component_with_foreign_key() { |component, fk| ... }
click to toggle source
# File lib/snaps/snapshot.rb, line 37 def each_component_with_foreign_key options.fetch(:components, []).each do |association| fk = record.class.reflect_on_association(association).foreign_key record.send(association).each do |component| yield(component, fk) end end end
snapshot_components(copy)
click to toggle source
# File lib/snaps/snapshot.rb, line 29 def snapshot_components(copy) each_component_with_foreign_key do |component, fk| component.snapshot! do |snapshot| snapshot[fk] = copy.id end end end