code: func (query Query) Save(record interface{}) error {
  	rv := reflect.ValueOf(record)
  	rt := rv.Type()
  	if rt.Kind() == reflect.Ptr && rt.Elem().Kind() == reflect.Slice {
  		// Put multiple records
  		rv = rv.Elem()
  
  		// if it's an empty slice, do nothing
  		if rv.Len() == 0 {
  			return nil
  		}
  
  		if query.Condition.None() {
  			// InsertAll
  			chs := []*changeset.Changeset{}
  
  			for i := 0; i < rv.Len(); i++ {
  				ch := changeset.Convert(rv.Index(i).Interface())
  				changeset.DeleteChange(ch, "id")
  				chs = append(chs, ch)
  			}
  
  			return query.Insert(record, chs...)
  		}
  
  		// Update only with first record definition.
  		ch := changeset.Convert(rv.Index(0).Interface())
  		changeset.DeleteChange(ch, "id")
  		changeset.DeleteChange(ch, "created_at")
  		return query.Update(record, ch)
  	}
  
  	// Put single records
  	ch := changeset.Convert(record)
  	changeset.DeleteChange(ch, "id")
  
  	if query.Condition.None() {
  		return query.Insert(record, ch)
  	}
  
  	// remove created_at from changeset
  	changeset.DeleteChange(ch, "created_at")
  
  	return query.Update(record, ch)
  }
docs: // Save a record to database.
  // If condition exist, it will try to update the record, otherwise it'll insert it.
  // Save ignores id from record.