---
title: "morph-to"
image: "https://adonia.pages.dev/og.png"
version: "next"
---

> Documentation Index
> Fetch the complete documentation index at: https://adonia.pages.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# morph-to

<!-- Generated by `pnpm docs:fields` from packages/core/src/schema/fields/morph_to.ts. Edit the TSDoc, not this file. -->

Polymorphic picker that never exposes model or table names on the wire.

| | |
| --- | --- |
| Builder | `F.morphTo(attribute: string, options: MorphToOptions = { types: {} }): MorphTo` |
| Wire type key | `morph-to` |
| Class chain | `MorphTo` → `Field` |
| Detail projection | `relation-entry` |
| Column counterpart | — *(not tabulatable)* |

## Example

```ts
import { F } from '@adonia/core'

F.morphTo('attribute')
```

## Props

This type adds no props of its own; it is configured entirely through the shared
[field DSL](/reference/fields#the-shared-field-dsl).

### Introspection

Read-only members this type adds — used by the compiler, the table derivation and
tests rather than by a schema author.

| Member | Declared on | Behaviour |
| --- | --- | --- |
| `get capabilities(): readonly string[]` | `MorphTo` | Requests the scoped relation-options endpoint for the selected type. |
| `detailProps(): JsonObject` | `MorphTo` | Exposes only stable label/resource-slug pairs to the detail renderer. |
| `contributeHints(hints: EagerHints): void` | `MorphTo` | Preloads the polymorphic attribute once for list/detail hydration. |
| `get optionsResolver()` | `MorphTo` | Resolves options only from the currently selected allowlisted resource slug. |
| `allowsType(slug: string): boolean` | `MorphTo` | Whether `slug` is one of this field's declared stable resource slugs. |
| `resolveType(slug: string, ctx: HttpContextLike)` | `MorphTo` | Resolves an allowlisted resource slug from the active panel registry. |
| `applyAttributes(record: object, value: unknown): void` | `MorphTo` | Writes the validated stable resource slug and id into the configured model columns. |

## Validation

Vine base: `vine.any()`.

Contributed by `MorphTo.vineSchema()` in `packages/core/src/schema/fields/morph_to.ts`. The shared modifiers (`required`, `nullable`, `requiredWhen`, `unique`, optionality) are applied on top by `Field.buildValidation`, and a `rules()` override replaces the base entirely — the validator compiler never branches on the field class.

## Declared in

- `packages/core/src/schema/fields/morph_to.ts` — `MorphTo`

Source: https://adonia.pages.dev/reference/fields/morph-to/index.mdx
