# Nested schemas and rules

**URL:** <https://discourse.dry-rb.org/t/nested-schemas-and-rules/57>\
**Category:** dry-validation\
**Created:** [July 13, 2016, 5:41pm UTC](https://discourse.dry-rb.org/t/nested-schemas-and-rules/57 "2016-07-13T17:41:02Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![theozaurus](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.dry-rb.org/theozaurus/32/33_2.png) [@theozaurus](https://discourse.dry-rb.org/u/theozaurus)\
**Post date:** [July 13, 2016, 5:41pm UTC](https://discourse.dry-rb.org/t/nested-schemas-and-rules/57/1 "2016-07-13T17:41:02Z")

</div>

Hi all,

Using dry-validation 0.9.2 errors from rules no longer nest correctly:

```ruby
NestedSchema = Dry::Validation.Schema {
  required(:user).schema do
    required(:email).filled
    required(:password).filled
    required(:password_confirmation).filled

    rule(passwords_match: [:password, :password_confirmation]) { |p1, p2| p1.eql?(p2) }
  end
}

result = NestedSchema.call(user: {password: 'foo', password_confirmation: 'bar'})

expect(result.messages.fetch(:user).fetch(:email)).to eq(['is missing']) # => passes
expect(result.messages.fetch(:user).fetch(:password)).to eq(['must be equal to bar']) # => fails

```

Should this work?

Cheers,

Theo

---

<div class="post-metadata">

**Author:** ![solnic](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.dry-rb.org/solnic/32/779_2.png) [@solnic](https://discourse.dry-rb.org/u/solnic)\
**Post date:** [July 13, 2016, 8:45pm UTC](https://discourse.dry-rb.org/t/nested-schemas-and-rules/57/2 "2016-07-13T20:45:06Z")

</div>

Looks like a regression. Please report an issue and I’ll fix it in 0.9.3.

---

<div class="post-metadata">

**Author:** ![theozaurus](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.dry-rb.org/theozaurus/32/33_2.png) [@theozaurus](https://discourse.dry-rb.org/u/theozaurus)\
**Post date:** [July 13, 2016, 8:46pm UTC](https://discourse.dry-rb.org/t/nested-schemas-and-rules/57/3 "2016-07-13T20:46:54Z")

</div>

[Done](https://github.com/dry-rb/dry-validation/issues/214)
