def factory_build_for_store(atts_hash, identifier_conditions = {}, full_data_object={}, &blk)      
      if identifier_conditions.empty?
        record = self.new
      else
        record = self.where(identifier_conditions).first_or_initialize
      end
      record.assign_attributes(atts_hash, :without_protection => true)

      if block_given?
        yield record, full_data_object
      end

      return record
    end
def factory_build_for_store(atts_hash, identifier_conditions = {}, full_data_object={}, &blk)      
      if identifier_conditions.empty?
        record = self.new
      else
        record = self.where(identifier_conditions).first_or_initialize
      end
      record.assign_attributes(atts_hash, :without_protection => true)

      if block_given?
        yield record, full_data_object
      end

      return record
    end
atts_hash are the attributes to assign to the Record
 identifier_conditions is what the scope for first_or_initialize is called upon
  so that an existing object is updated
  full_data_object is passed in to be saved as a blob