Sha256: 9e7055c83df4140843aa406ad05abcdc3fc56d3775b152e58f304d9870466c1d

Contents?: true

Size: 762 Bytes

Versions: 1

Compression:

Stored size: 762 Bytes

Contents

require "ar_transaction_changes/version"
require "active_record"

module ArTransactionChanges
  def _run_commit_callbacks
    super
  ensure
    @transaction_changed_attributes = nil
  end

  def _run_rollback_callbacks
    super
  ensure
    @transaction_changed_attributes = nil
  end

  def transaction_changed_attributes
    @transaction_changed_attributes ||= HashWithIndifferentAccess.new
  end

  def _write_attribute(attr_name, value)
    attr_name = attr_name.to_s
    old_value = read_attribute(attr_name)
    ret = super(attr_name, value)
    new_value = read_attribute(attr_name)
    unless transaction_changed_attributes.key?(attr_name) || new_value == old_value
      transaction_changed_attributes[attr_name] = old_value
    end
    ret
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ar_transaction_changes-1.1.5 lib/ar_transaction_changes.rb