From 2d1305750619b5acf3011974a338963859b053b0 Mon Sep 17 00:00:00 2001 From: Brun Christophe Date: Wed, 10 Jun 2026 14:22:03 +0200 Subject: [PATCH] feat(schema): expose foreign_key_type_field on polymorphic relation Expose the discriminator column name (e.g. "addressable_type") as metadata of the PolymorphicManyToOne relation in the emitted schema, alongside polymorphic_referenced_models, so the Forest query executor can resolve which model a polymorphic record targets. The raw _id/_type columns remain hidden from the frontend; only the NAME of the _type column is exposed as relation metadata. Ref: PRD-493 Co-Authored-By: Claude Opus 4.8 (1M context) --- .../lib/forest_admin_agent/utils/schema/generator_field.rb | 3 ++- .../utils/schema/generator_field_polymorphic_spec.rb | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/forest_admin_agent/lib/forest_admin_agent/utils/schema/generator_field.rb b/packages/forest_admin_agent/lib/forest_admin_agent/utils/schema/generator_field.rb index 3f5a10565..0f8940649 100644 --- a/packages/forest_admin_agent/lib/forest_admin_agent/utils/schema/generator_field.rb +++ b/packages/forest_admin_agent/lib/forest_admin_agent/utils/schema/generator_field.rb @@ -165,7 +165,8 @@ def build_polymorphic_many_to_one_schema(relation, base_schema) isSortable: false, validations: [], reference: "#{base_schema[:field]}.id", - polymorphic_referenced_models: relation.foreign_collections + polymorphic_referenced_models: relation.foreign_collections, + foreign_key_type_field: relation.foreign_key_type_field } ) end diff --git a/packages/forest_admin_agent/spec/lib/forest_admin_agent/utils/schema/generator_field_polymorphic_spec.rb b/packages/forest_admin_agent/spec/lib/forest_admin_agent/utils/schema/generator_field_polymorphic_spec.rb index 5501363f6..ec64ce92d 100644 --- a/packages/forest_admin_agent/spec/lib/forest_admin_agent/utils/schema/generator_field_polymorphic_spec.rb +++ b/packages/forest_admin_agent/spec/lib/forest_admin_agent/utils/schema/generator_field_polymorphic_spec.rb @@ -86,7 +86,8 @@ module Schema isSortable: false, isVirtual: false, validations: [], - polymorphic_referenced_models: %w[User Order] + polymorphic_referenced_models: %w[User Order], + foreign_key_type_field: 'addressable_type' } ) end