Skip to content

Commit 4a073cc

Browse files
fix(#1310): fix excluded_if for pointers (#1313)
## Fixes Or Enhances - fixes #1310 - add check for pointers in case of excluded_if
1 parent a947377 commit 4a073cc

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

baked_in.go

+8-1
Original file line numberDiff line numberDiff line change
@@ -1828,7 +1828,14 @@ func requireCheckFieldValue(
18281828
return int64(field.Len()) == asInt(value)
18291829

18301830
case reflect.Bool:
1831-
return field.Bool() == asBool(value)
1831+
return field.Bool() == (value == "true")
1832+
1833+
case reflect.Ptr:
1834+
if field.IsNil() {
1835+
return value == "nil"
1836+
}
1837+
// Handle non-nil pointers
1838+
return requireCheckFieldValue(fl, param, value, defaultNotFoundValue)
18321839
}
18331840

18341841
// default reflect.String:

validator_test.go

+19
Original file line numberDiff line numberDiff line change
@@ -12002,6 +12002,25 @@ func TestExcludedIf(t *testing.T) {
1200212002
errs = validate.Struct(test10)
1200312003
Equal(t, errs, nil)
1200412004

12005+
test11 := struct {
12006+
Field1 bool
12007+
Field2 *string `validate:"excluded_if=Field1 false"`
12008+
}{
12009+
Field1: false,
12010+
Field2: nil,
12011+
}
12012+
errs = validate.Struct(test11)
12013+
Equal(t, errs, nil)
12014+
12015+
test12 := struct {
12016+
Field1 bool
12017+
Field2 *string `validate:"excluded_if=Field1 !Field1"`
12018+
}{
12019+
Field1: true,
12020+
Field2: nil,
12021+
}
12022+
errs = validate.Struct(test12)
12023+
Equal(t, errs, nil)
1200512024
// Checks number of params in struct tag is correct
1200612025
defer func() {
1200712026
if r := recover(); r == nil {

0 commit comments

Comments
 (0)