def apply_defaults(defaults=attribute_defaults)
      @attributes ||= {}
      defaults.each do |name, value|
        # instance variable is used here to avoid any dirty tracking in attribute setter methods
        @attributes[name] = value unless @attributes.has_key? name
      end
    end
def apply_defaults(defaults=attribute_defaults)
      @attributes ||= {}
      defaults.each do |name, value|
        # instance variable is used here to avoid any dirty tracking in attribute setter methods
        @attributes[name] = value unless @attributes.has_key? name
      end
    end
Applies the attribute defaults

 Applies all the default values to any attributes not yet set, avoiding
 any attribute setter logic, such as dirty tracking.

 @example Usage
   class Person
     include ActiveAttr::AttributeDefaults

     attribute :first_name, :default => "John"

     def reset!
       @attributes = {}
       apply_defaults
     end
   end

   person = Person.new(:first_name => "Chris")
   person.reset!
   person.first_name #=> "John"

 @param [Hash{String => Object}, #each] defaults The defaults to apply

 @since 0.5.0