# Clarification on dry-types support in dry-schema

**URL:** <https://discourse.dry-rb.org/t/clarification-on-dry-types-support-in-dry-schema/837>\
**Category:** Support\
**Created:** [July 15, 2019, 10:59pm UTC](https://discourse.dry-rb.org/t/clarification-on-dry-types-support-in-dry-schema/837 "2019-07-15T22:59:45Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![alassek](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.dry-rb.org/alassek/32/314_2.png) [@alassek](https://discourse.dry-rb.org/u/alassek)\
**Post date:** [July 15, 2019, 10:59pm UTC](https://discourse.dry-rb.org/t/clarification-on-dry-types-support-in-dry-schema/837/1 "2019-07-15T22:59:45Z")

</div>

According to the [web documentation](https://dry-rb.org/gems/dry-schema/basics/type-specs/):

> The DSL accepts any `Dry::Types::Type` object

I have a type defined simliar to this:

```ruby
module Types
  include Dry::Types(default: :nominal)

  Metadata = Strict::Hash.optional
  Href = Strict::String | Hash.schema(href: Strict::String, meta: Metadata)
  Links = Map(Symbol, Href)
end

```

I’m defining a schema as the docs suggest:

```ruby
schema = Dry::Schema.JSON do
  required(:links).value(Types::Links)
end

```

which results in this error:

```auto
NoMethodError: undefined method `visit_map' for #<Dry::Schema::PredicateInferrer::Compiler:0x00007ff619665500>

```

What am I doing wrong here?

---

<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 16, 2019, 4:56pm UTC](https://discourse.dry-rb.org/t/clarification-on-dry-types-support-in-dry-schema/837/2 "2019-07-16T16:56:28Z")

</div>

`Types::Map` is not supported yet. In order to make it work we need to add support for validating keys.

---

<div class="post-metadata">

**Author:** ![alassek](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.dry-rb.org/alassek/32/314_2.png) [@alassek](https://discourse.dry-rb.org/u/alassek)\
**Post date:** [July 16, 2019, 5:50pm UTC](https://discourse.dry-rb.org/t/clarification-on-dry-types-support-in-dry-schema/837/3 "2019-07-16T17:50:37Z")

</div>

Is there documentation anywhere about which types are supported and which aren’t?

---

<div class="post-metadata">

**Author:** ![alassek](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.dry-rb.org/alassek/32/314_2.png) [@alassek](https://discourse.dry-rb.org/u/alassek)\
**Post date:** [July 16, 2019, 6:01pm UTC](https://discourse.dry-rb.org/t/clarification-on-dry-types-support-in-dry-schema/837/4 "2019-07-16T18:01:53Z")

</div>

I think I’m going to have to ditch dry-types here and try something else. 🤔 What if I wrote reusable dry-logic predicates in place of my types… would that work?
