def apply_attributes!(hash, dirty_track: false)
      return unless hash.is_a?(Hash)

      @id ||= hash[Parse::Model::ID] || hash[Parse::Model::OBJECT_ID] || hash[:objectId]
      hash.each do |key, value|
        method = "#{key}_set_attribute!".freeze
        send(method, value, dirty_track) if respond_to?( method )
      end
    end
def apply_attributes!(hash, dirty_track: false)
      return unless hash.is_a?(Hash)

      @id ||= hash[Parse::Model::ID] || hash[Parse::Model::OBJECT_ID] || hash[:objectId]
      hash.each do |key, value|
        method = "#{key}_set_attribute!".freeze
        send(method, value, dirty_track) if respond_to?( method )
      end
    end
support for setting a hash of attributes on the object with a given dirty tracking value
 if dirty_track: is set to false (default), attributes are set without dirty tracking.
 Allos mass assignment of properties with a provided hash.
 @param hash [Hash] the hash matching the property field names.
 @param dirty_track [Boolean] whether dirty tracking be enabled
 @return [Hash]