我一直在尝试使用 Hanami (在dry-validation之上)验证登录过程。
关键是:如何验证与 2 个字段相关的内容:电子邮件 + 密码?
我读过自定义谓词,但它们似乎只针对每个字段。另一个概念是规则,但根据示例,它并没有按照我需要的方式关联两件事。
这是我的代码:
module Web::Controllers::Sessions
class Create
include Web::Action
expose :validation # my standard way to show errors in the template
def call(params)
@validation = SigninValidator.new(params[:user]).validate
if @validation.success?
# more stuff here
end
end
end
class SigninValidator
include Hanami::Validations::Form
validations do
required(:email) { format?(EMAIL_REGEX)}
required(:password).filled(:str?)
# I GOT CONFUSED HERE
# how could I use someting like a repository and relate something like
# predicate + message for "email or password doesn't match"
end
end
不幸的是,Hanami Guide 中的验证部分是空的,我找不到查看源代码的解决方案(hanami-validation 和 dry-validation)。
任何帮助,将不胜感激。