code: func Stringify(object interface{}) string {
  	if obj, ok := object.(interface {
  		Stringify() string
  	}); ok {
  		return obj.Stringify()
  	}
  
  	scope := gorm.Scope{Value: object}
  	for _, column := range []string{"Name", "Title", "Code"} {
  		if field, ok := scope.FieldByName(column); ok {
  			if field.Field.IsValid() {
  				result := field.Field.Interface()
  				if valuer, ok := result.(driver.Valuer); ok {
  					if result, err := valuer.Value(); err == nil {
  						return fmt.Sprint(result)
  					}
  				}
  				return fmt.Sprint(result)
  			}
  		}
  	}
  
  	if scope.PrimaryField() != nil {
  		if scope.PrimaryKeyZero() {
  			return ""
  		}
  		return fmt.Sprintf("%v#%v", scope.GetModelStruct().ModelType.Name(), scope.PrimaryKeyValue())
  	}
  
  	return fmt.Sprint(reflect.Indirect(reflect.ValueOf(object)).Interface())
  }
docs: // Stringify stringify any data, if it is a struct, will try to use its Name, Title, Code field, else will use its primary key