def attribute_updates(include_all = false)
      # TODO: Replace this algorithm with reduce()
      h = {}
      changed.each do |key|
        key = key.to_sym
        next if include_all == false && Parse::Properties::BASE_KEYS.include?(key)
        next unless fields[key].present?
        remote_field = self.field_map[key] || key
        h[remote_field] = send key
        h[remote_field] = {__op: :Delete} if h[remote_field].nil?
        # in the case that the field is a Parse object, generate a pointer
        # if it is a Parse::PointerCollectionProxy, then make sure we get a list of pointers.
        h[remote_field] = h[remote_field].parse_pointers if h[remote_field].is_a?(Parse::PointerCollectionProxy)
        h[remote_field] = h[remote_field].pointer if h[remote_field].respond_to?(:pointer)
      end
      h
    end
def attribute_updates(include_all = false)
      
      h = {}
      changed.each do |key|
        key = key.to_sym
        next if include_all == false && Parse::Properties::BASE_KEYS.include?(key)
        next unless fields[key].present?
        remote_field = self.field_map[key] || key
        h[remote_field] = send key
        h[remote_field] = {__op: :Delete} if h[remote_field].nil?
        
        
        h[remote_field] = h[remote_field].parse_pointers if h[remote_field].is_a?(Parse::PointerCollectionProxy)
        h[remote_field] = h[remote_field].pointer if h[remote_field].respond_to?(:pointer)
      end
      h
    end
def attribute_updates ( include_all = false ) # TODO: Replace this algorithm with reduce() h = { } changed . each do | key | key = key . to_sym next if include_all == false && Parse :: Properties :: BASE_KEYS . include? ( key ) next unless fields [ key ] . present? remote_field = self . field_map [ key ] || key h [ remote_field ] = send key h [ remote_field ] = { __op : :Delete } if h [ remote_field ] . nil? # in the case that the field is a Parse object, generate a pointer # if it is a Parse::PointerCollectionProxy, then make sure we get a list of pointers. h [ remote_field ] = h [ remote_field ] . parse_pointers if h [ remote_field ] . is_a? ( Parse :: PointerCollectionProxy ) h [ remote_field ] = h [ remote_field ] . pointer if h [ remote_field ] . respond_to? ( :pointer ) end h end
Returns a hash of attributes for properties that have changed. This will
 not include any of the base attributes (ex. id, created_at, etc).
 This method helps generate the change payload that will be sent when saving
 objects to Parse.
 @param include_all [Boolean] whether to include all {Parse::Properties::BASE_KEYS} attributes.
 @return [Hash]
Returns a hash of attributes for properties that have changed . This will not include any of the base attributes ( ex . id created_at etc ) . This method helps generate the change payload that will be sent when saving objects to Parse .