fixed:create nil pointer
This commit is contained in:
parent
bfda75d099
commit
e371ada36e
@ -77,7 +77,14 @@ func Parse(dest interface{}, cacheStore *sync.Map, namer Namer) (*Schema, error)
|
||||
return nil, fmt.Errorf("%w: %+v", ErrUnsupportedDataType, dest)
|
||||
}
|
||||
|
||||
modelType := reflect.Indirect(reflect.ValueOf(dest)).Type()
|
||||
value := reflect.ValueOf(dest)
|
||||
var modelType reflect.Type
|
||||
if value.IsZero() {
|
||||
modelType = value.Type()
|
||||
} else {
|
||||
modelType = reflect.Indirect(value).Type()
|
||||
}
|
||||
|
||||
if modelType.Kind() == reflect.Interface {
|
||||
modelType = reflect.Indirect(reflect.ValueOf(dest)).Elem().Type()
|
||||
}
|
||||
|
@ -517,3 +517,12 @@ func TestCreateFromSubQuery(t *testing.T) {
|
||||
t.Errorf("invalid insert SQL, got %v", result.Statement.SQL.String())
|
||||
}
|
||||
}
|
||||
|
||||
func TestNilPointer(t *testing.T) {
|
||||
var user *User
|
||||
|
||||
err := DB.Create(user).Error
|
||||
if err == nil || err != gorm.ErrInvalidValue {
|
||||
t.Fatalf("it is not ErrInvalidValue")
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user