mirror of https://github.com/go-gorm/gorm.git
Fixed: panic on nullable value with multiple foreign key usage (#6839)
See: https://github.com/go-gorm/playground/pull/537
This commit is contained in:
parent
8fb9a31775
commit
d81ae6f701
|
@ -74,7 +74,11 @@ func ToStringKey(values ...interface{}) string {
|
|||
case uint:
|
||||
results[idx] = strconv.FormatUint(uint64(v), 10)
|
||||
default:
|
||||
results[idx] = fmt.Sprint(reflect.Indirect(reflect.ValueOf(v)).Interface())
|
||||
results[idx] = "nil"
|
||||
vv := reflect.ValueOf(v)
|
||||
if vv.IsValid() && !vv.IsZero() {
|
||||
results[idx] = fmt.Sprint(reflect.Indirect(vv).Interface())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -48,8 +48,10 @@ func TestToStringKey(t *testing.T) {
|
|||
}{
|
||||
{[]interface{}{"a"}, "a"},
|
||||
{[]interface{}{1, 2, 3}, "1_2_3"},
|
||||
{[]interface{}{1, nil, 3}, "1_nil_3"},
|
||||
{[]interface{}{[]interface{}{1, 2, 3}}, "[1 2 3]"},
|
||||
{[]interface{}{[]interface{}{"1", "2", "3"}}, "[1 2 3]"},
|
||||
{[]interface{}{[]interface{}{"1", nil, "3"}}, "[1 <nil> 3]"},
|
||||
}
|
||||
for _, c := range cases {
|
||||
if key := ToStringKey(c.values...); key != c.key {
|
||||
|
|
Loading…
Reference in New Issue