fix: save reflect err

This commit is contained in:
xutaiping 2022-12-12 21:47:29 +08:00
parent d9525d4da4
commit 2026177412
2 changed files with 8 additions and 1 deletions

View File

@ -41,4 +41,6 @@ var (
ErrInvalidValueOfLength = errors.New("invalid association values, length doesn't match")
// ErrPreloadNotAllowed preload is not allowed when count is used
ErrPreloadNotAllowed = errors.New("preload is not allowed when count is used")
// ErrReflect err Reflect
ErrReflect = errors.New("reflect err")
)

View File

@ -75,7 +75,12 @@ func (db *DB) Save(value interface{}) (tx *DB) {
reflectValue := reflect.Indirect(reflect.ValueOf(value))
for reflectValue.Kind() == reflect.Ptr || reflectValue.Kind() == reflect.Interface {
reflectValue = reflect.Indirect(reflectValue)
reflectIndirect := reflect.Indirect(reflectValue)
if reflectValue == reflectIndirect {
tx.AddError(ErrReflect)
return
}
reflectValue = reflectIndirect
}
switch reflectValue.Kind() {