如果模式验证未通过,如何防止干验证执行规则


class PostSchema < Dry::Validation::Contract
  params do
    required(:title).value(:string, size: 20)
    required(:content).value(:string, size: 50)
  end 
  
  rule do 
     # prevent this rule from executing if schema validation did not pass
  end
end

我目前的工作是使用result.schema_result.success?。即使这也可以,但我在https://github.com/dry-rb/dry-validation/blob/master/lib/lib/dry/dry/validation/result.rb#l41上查看源代码。这是一个私人API。有人对此有任何想法吗?

一条未指定任何键的规则将始终执行。那是设计。如果您希望它不被执行,只需提供其取决于哪些密钥,即:

rule(:title, :content) do
  # won't be executed unless both title and content passed
  # the schema checks
end

最新更新