Validatable能否实现可选密码的条件验证?
解决方案
完全可以通过Validatable实现这个需求,不需要在请求处理逻辑里手动验证。只需调整验证规则,针对可选类型的password做存在时才触发的条件验证:
extension User.Create: Validatable { static func validations(_ validations: inout Validations) { validations.add("email", as: String.self, is: .email) // 密码为可选类型,仅当用户提供时验证长度≥8 validations.add("password", as: String?.self, is: .optional(.count(8...))) } }
逻辑说明
- 当请求中不携带
password字段,或者password为nil时,验证会直接通过,你可以在后续逻辑里自动生成密码; - 当用户主动提供
password时,验证器会自动检查其长度是否满足8位及以上的要求,不满足则返回验证失败。
内容的提问来源于stack exchange,提问作者LinusG.
相关产品推荐
相关产品推荐

