# High level rule validation ArgumentError

**URL:** <https://discourse.dry-rb.org/t/high-level-rule-validation-argumenterror/748>\
**Category:** dry-validation\
**Created:** [March 25, 2019, 4:10pm UTC](https://discourse.dry-rb.org/t/high-level-rule-validation-argumenterror/748 "2019-03-25T16:10:27Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![nakuku](https://avatars.discourse-cdn.com/v4/letter/n/74df32/32.png) [@nakuku](https://discourse.dry-rb.org/u/nakuku)\
**Post date:** [March 25, 2019, 4:10pm UTC](https://discourse.dry-rb.org/t/high-level-rule-validation-argumenterror/748/1 "2019-03-25T16:10:27Z")

</div>

```
Create = Dry::Validation.Schema do
  required(:template_zones).each do
    schema do
      required(:name).filled(:str?)

      optional(:validations)
      optional(:columns).maybe(:array?)

      # if columns attr is not present/empty then validations must be an array of allowed strings
      rule(is_not_table: %i(columns validations)) do |columns, validations|
        columns.none? > validations.type?(Array) & validations.each(included_in?: ["required", "numeric"])
      end
    end
  end
end

```

This raises `ArgumentError: included_in? predicate arity is invalid`. I probably didn’t understand the DSL properly. Could anyone direct me on the right path?

```auto
schema.call({ template_zones: [{ name: "my_name", validations: ["required", "invalid"] }]}).errors

```

I figured out that for:

```auto
rule(validations: [:columns, :validations]) do |columns, validations|
  validations.each { v.included_in?(["required, ''alphanum"]) }
end

```

`v` variable is `[:name, "my_name"]`. While my expectation is that it should be an element of `validations` - `"required"` and `"invalid"`

So it seems like `each` inside `rule` has some unexpected behaviour?  
Anyway i resolved the issue using custom valiidator:

```auto
rule(validations: [:columns, :validations]) do |columns, validations|
  validations.validation_rules?
end

```

PS. What is the easiest way to debug my schema? If i put `binding.pry` inside schema it will raise `ArgumentError: +binding+ is not a valid predicate name`
