code: func (zip GobMeddler) PreWrite(field interface{}) (saveValue interface{}, err error) {
  	buffer := new(bytes.Buffer)
  
  	if zip {
  		// gob encode and gzip
  		gzipWriter := gzip.NewWriter(buffer)
  		defer gzipWriter.Close()
  		gobEncoder := gob.NewEncoder(gzipWriter)
  		if err := gobEncoder.Encode(field); err != nil {
  			return nil, fmt.Errorf("Gob encoding/gzip error: %v", err)
  		}
  		if err := gzipWriter.Close(); err != nil {
  			return nil, fmt.Errorf("Closing gzip writer: %v", err)
  		}
  
  		return buffer.Bytes(), nil
  	}
  
  	// gob encode
  	gobEncoder := gob.NewEncoder(buffer)
  	if err := gobEncoder.Encode(field); err != nil {
  		return nil, fmt.Errorf("Gob encoding error: %v", err)
  	}
  	return buffer.Bytes(), nil
  }
docs: // PreWrite is called before an Insert or Update operation for fields that have the GobMeddler