Sha256: a8d11118a251be37e98af577cb4fd82685ae2dec2660a045e2f9ce4d0f690478

Contents?: true

Size: 983 Bytes

Versions: 2

Compression:

Stored size: 983 Bytes

Contents

require 'active_support'
require 'active_model/dirty'
require "active_model/attribute_mutation_tracker"
require 'active_attr'

module ActiveAttr
  module Dirty
    extend ActiveSupport::Concern
    include ActiveModel::Dirty

    module ClassMethods
      def attribute!(name, options={})
        super(name, options)
        define_method("#{name}=") do |value|
          send("#{name}_will_change!") unless value == read_attribute(name)
          super(value)
        end
      end
    end

    def attributes_and_changes
      attributes.select { |attr, key| changed.include? attr }
    end

    def mutations_from_database
      #@mutations_from_database ||= ActiveModel::NullMutationTracker.instance
      @mutations_from_database ||= defined?(ActiveModel::ForcedMutationTracker) ? ActiveModel::ForcedMutationTracker.new(self) : ActiveModel::NullMutationTracker.instance
    end

    def forget_attribute_assignments
      @attributes if defined?(@attributes)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
openstax_active_force-1.1.1 lib/active_attr/dirty.rb
openstax_active_force-1.1.0 lib/active_attr/dirty.rb