Sha256: ca84589b915d8ab42cd3a755210bb7885bac6cf774bf380e96fc42d1d894ff90

Contents?: true

Size: 683 Bytes

Versions: 3

Compression:

Stored size: 683 Bytes

Contents

require 'active_support/concern'
require 'active_model/dirty'
require 'active_attr'

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

    # Class methods for ActiveAttr::Dirty module
    module ClassMethods
      # Overwritten attribute! method
      # @param [Symbol] name
      # @param [Hash] options
      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
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
syncano-4.0.0.alpha1 lib/active_attr/dirty.rb
syncano-4.0.0.alpha lib/active_attr/dirty.rb
syncano-4.0.0.pre lib/active_attr/dirty.rb