diff --git a/schema/schema.go b/schema/schema.go index e58e0eb4..60a434fa 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -78,12 +78,10 @@ func Parse(dest interface{}, cacheStore *sync.Map, namer Namer) (*Schema, error) } value := reflect.ValueOf(dest) - var modelType reflect.Type - if value.IsZero() { - modelType = value.Type() - } else { - modelType = reflect.Indirect(value).Type() + if value.Kind() == reflect.Ptr && value.IsNil() { + value = reflect.New(value.Type().Elem()) } + modelType := reflect.Indirect(value).Type() if modelType.Kind() == reflect.Interface { modelType = reflect.Indirect(reflect.ValueOf(dest)).Elem().Type() diff --git a/tests/create_test.go b/tests/create_test.go index e19ff728..060f78af 100644 --- a/tests/create_test.go +++ b/tests/create_test.go @@ -518,7 +518,7 @@ func TestCreateFromSubQuery(t *testing.T) { } } -func TestNilPointer(t *testing.T) { +func TestCreateNilPointer(t *testing.T) { var user *User err := DB.Create(user).Error