fix maybe nil panic

This commit is contained in:
demoManito 2022-09-26 23:01:38 +08:00
parent 328f301982
commit e19dac065e
3 changed files with 6 additions and 2 deletions

View File

@ -160,7 +160,8 @@ func (schema *Schema) buildPolymorphicRelation(relation *Relationship, field *Fi
primaryKeyField := schema.PrioritizedPrimaryField primaryKeyField := schema.PrioritizedPrimaryField
if len(relation.foreignKeys) > 0 { if len(relation.foreignKeys) > 0 {
if primaryKeyField = schema.LookUpField(relation.foreignKeys[0]); primaryKeyField == nil || len(relation.foreignKeys) > 1 { primaryKeyField = schema.LookUpField(relation.foreignKeys[0])
if primaryKeyField == nil || len(relation.foreignKeys) > 1 {
schema.err = fmt.Errorf("invalid polymorphic foreign keys %+v for %v on field %s", relation.foreignKeys, schema, field.Name) schema.err = fmt.Errorf("invalid polymorphic foreign keys %+v for %v on field %s", relation.foreignKeys, schema, field.Name)
} }
} }

View File

@ -113,6 +113,9 @@ func TestCallbacks(t *testing.T) {
for idx, data := range datas { for idx, data := range datas {
db, err := gorm.Open(nil, nil) db, err := gorm.Open(nil, nil)
if err != nil {
t.Fatal(err)
}
callbacks := db.Callback() callbacks := db.Callback()
for _, c := range data.callbacks { for _, c := range data.callbacks {

View File

@ -102,7 +102,7 @@ func TestTransactionWithBlock(t *testing.T) {
return errors.New("the error message") return errors.New("the error message")
}) })
if err.Error() != "the error message" { if err != nil && err.Error() != "the error message" {
t.Fatalf("Transaction return error will equal the block returns error") t.Fatalf("Transaction return error will equal the block returns error")
} }