lib/parse/model/core/properties.rb
def format_operation(key, val, data_type)
      return val unless val.is_a?(Hash) && val["__op"].present?
      op = val["__op"]
      ivar = :"@#{key}"
      #handles delete case otherwise 'null' shows up in column
      if "Delete" == op
        val = nil
      elsif "Add" == op && data_type == :array
        val = (instance_variable_get(ivar) || []).to_a + (val["objects"] || [])
      elsif "Remove" == op && data_type == :array
        val = (instance_variable_get(ivar) || []).to_a - (val["objects"] || [])
      elsif "AddUnique" == op && data_type == :array
        objects = (val["objects"] || []).uniq
        original_items = (instance_variable_get(ivar) || []).to_a
        objects.reject! { |r| original_items.include?(r) }
        val = original_items + objects
      elsif "Increment" == op && data_type == :integer || data_type == :integer
        # for operations that increment by a certain amount, they come as a hash
        val = (instance_variable_get(ivar) || 0) + (val["amount"] || 0).to_i
      end
      val
    end
def format_operation(key, val, data_type)
      return val unless val.is_a?(Hash) && val["__op"].present?
      op = val["__op"]
      ivar = :"@#{key}"
      #handles delete case otherwise 'null' shows up in column
      if "Delete" == op
        val = nil
      elsif "Add" == op && data_type == :array
        val = (instance_variable_get(ivar) || []).to_a + (val["objects"] || [])
      elsif "Remove" == op && data_type == :array
        val = (instance_variable_get(ivar) || []).to_a - (val["objects"] || [])
      elsif "AddUnique" == op && data_type == :array
        objects = (val["objects"] || []).uniq
        original_items = (instance_variable_get(ivar) || []).to_a
        objects.reject! { |r| original_items.include?(r) }
        val = original_items + objects
      elsif "Increment" == op && data_type == :integer || data_type == :integer
        # for operations that increment by a certain amount, they come as a hash
        val = (instance_variable_get(ivar) || 0) + (val["amount"] || 0).to_i
      end
      val
    end
def format_operation ( key , val , data_type ) return val unless val . is_a? ( Hash ) && val [ "__op" ] . present? op = val [ "__op" ] ivar = :" #{ key } " #handles delete case otherwise 'null' shows up in column if "Delete" == op val = nil elsif "Add" == op && data_type == :array val = ( instance_variable_get ( ivar ) || [ ] ) . to_a + ( val [ "objects" ] || [ ] ) elsif "Remove" == op && data_type == :array val = ( instance_variable_get ( ivar ) || [ ] ) . to_a - ( val [ "objects" ] || [ ] ) elsif "AddUnique" == op && data_type == :array objects = ( val [ "objects" ] || [ ] ) . uniq original_items = ( instance_variable_get ( ivar ) || [ ] ) . to_a objects . reject! { | r | original_items . include? ( r ) } val = original_items + objects elsif "Increment" == op && data_type == :integer || data_type == :integer # for operations that increment by a certain amount, they come as a hash val = ( instance_variable_get ( ivar ) || 0 ) + ( val [ "amount" ] || 0 ) . to_i end val end
Returns a formatted value based on the operation hash and data_type of the property.
 For some values in Parse, they are specified as operation hashes which could include
 Add, Remove, Delete, AddUnique and Increment.
 @param key [Symbol] the name of the property
 @param val [Hash] the Parse operation hash value.
 @param data_type [Symbol] The data type of the property.
 @return [Object]
Returns a formatted value based on the operation hash and data_type of the property . For some values in Parse they are specified as operation hashes which could include Add Remove Delete AddUnique and Increment .