code: func ValidateRequired(ch *Changeset, fields []string, opts ...Option) {
  	options := Options{
  		message: ValidateRequiredErrorMessage,
  	}
  	options.apply(opts)
  
  	for _, f := range fields {
  		val, exist := ch.changes[f]
  
  		// check values if it's not exist in changeset when changeOnly is false and changeset values are all zero value
  		if !exist && !options.changeOnly && !ch.zero {
  			val, exist = ch.values[f]
  		}
  
  		str, isStr := val.(string)
  		if exist && (isStr && strings.TrimSpace(str) != "") || (!isStr && val != nil) {
  			continue
  		}
  
  		msg := strings.Replace(options.message, "{field}", f, 1)
  		AddError(ch, f, msg)
  	}
  }
docs: // ValidateRequired validates that one or more fields are present in the changeset.
  // It'll add error to changeset if field in the changes is nil or string made only of whitespace,