Sha256: 8c67b0d7837195e406fc45d3f863ca64d36f4ddc07867356dff31f0c19d1bc5c

Contents?: true

Size: 730 Bytes

Versions: 3

Compression:

Stored size: 730 Bytes

Contents

module CanHasState
  module DirtyHelper
    extend ActiveSupport::Concern

    included do
      include ActiveModel::Dirty
    end

    module ClassMethods

      def track_dirty(*attrs)
        define_attribute_methods attrs
        attrs.each do |attr|
          attr = attr.to_s
          attr_reader(attr) unless respond_to?(attr)
          has_writer = respond_to?("#{attr}=")
          define_method "#{attr}=" do |val|
            send("#{attr}_will_change!") unless val == instance_variable_get("@#{attr}")
            has_writer ? super(val) : instance_variable_set("@#{attr}", val)
            changed_attributes.delete(attr) if attribute_was(attr) == send(attr)
          end
        end
      end

    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
can_has_state-0.3.2 lib/can_has_state/dirty_helper.rb
can_has_state-0.3.1 lib/can_has_state/dirty_helper.rb
can_has_state-0.3.0 lib/can_has_state/dirty_helper.rb