diff --git a/callbacks.go b/callbacks.go index 394073e..d5fee1e 100644 --- a/callbacks.go +++ b/callbacks.go @@ -34,18 +34,20 @@ func validate(scope *gorm.Scope) { } } -func flatValidatorErrors(validatorErrors govalidator.Errors) []govalidator.Error { - resultErrors := []govalidator.Error{} +func flatInner(validatorErrors govalidator.Errors, flattened *[]govalidator.Error) { for _, validatorError := range validatorErrors.Errors() { if errors, ok := validatorError.(govalidator.Errors); ok { - for _, e := range errors { - resultErrors = append(resultErrors, e.(govalidator.Error)) - } + flatInner(errors, flattened) } if e, ok := validatorError.(govalidator.Error); ok { - resultErrors = append(resultErrors, e) + *flattened = append(*flattened, e) } } +} + +func flatValidatorErrors(validatorErrors govalidator.Errors) []govalidator.Error { + resultErrors := []govalidator.Error{} + flatInner(validatorErrors, &resultErrors) return resultErrors }