Sha256: c85634fa402fb6962cbc53e2cb5af20b5c47724021fa2caade861437344ea6ed

Contents?: true

Size: 1.06 KB

Versions: 20

Compression:

Stored size: 1.06 KB

Contents

module Snaptime
  module ArHooks
    def self.before_create(record)
      if record.natural_id.nil?
        record.valid_from = Snaptime.current_now
        ActiveRecord::Base.uncached do
          record.natural_id = record.class.connection.next_sequence_value(record.class.sequence_name)
        end
      end
    end

    def self.after_create(record)
      Snaptime.record_cloned_in_current_tx(record)
    end

    def self.before_update(record)
      return unless Snaptime.record_cloning_enabled?

      if record.valid_to.nil? && record.changed? && !Snaptime.record_cloned_in_current_tx?(record)
        record.valid_from = Snaptime.current_now

        Snaptime::RecordCloner.clone_record!(
          record,
          override_attributes: { valid_to: record.valid_from - SMALLEST_TIME_UNIT },
          return_record: false
        )

        Snaptime.record_cloned_in_current_tx(record)
      end
    end

    def self.destroy(record)
      record.deleted = true
      record.version_is_minor = true if record.respond_to?(:version_is_minor=)
      record.save!
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
snaptime-22.0.0 lib/snaptime/ar_hooks.rb
snaptime-21.0.0 lib/snaptime/ar_hooks.rb
snaptime-0.3.0 lib/snaptime/ar_hooks.rb
snaptime-0.2.0 lib/snaptime/ar_hooks.rb
snaptime-0.0.20 lib/snaptime/ar_hooks.rb
snaptime-0.0.19 lib/snaptime/ar_hooks.rb
snaptime-0.0.18 lib/snaptime/ar_hooks.rb
snaptime-0.0.17 lib/snaptime/ar_hooks.rb
snaptime-0.0.16 lib/snaptime/ar_hooks.rb
snaptime-0.0.15 lib/snaptime/ar_hooks.rb
snaptime-0.0.14 lib/snaptime/ar_hooks.rb
snaptime-0.0.13 lib/snaptime/ar_hooks.rb
snaptime-0.0.12 lib/snaptime/ar_hooks.rb
snaptime-0.0.11 lib/snaptime/ar_hooks.rb
snaptime-0.0.10 lib/snaptime/ar_hooks.rb
snaptime-0.0.9 lib/snaptime/ar_hooks.rb
snaptime-0.0.8 lib/snaptime/ar_hooks.rb
snaptime-0.0.7 lib/snaptime/ar_hooks.rb
snaptime-0.0.6 lib/snaptime/ar_hooks.rb
snaptime-0.0.1 lib/snaptime/ar_hooks.rb