I imagine this is a pretty common need, and that many codebases would either have a schema with sets of null values, or end up having their own custom Ecto type implementations.
This library indeed provides a custom Ecto Type that determines the right embed schema to use, based on params to cast. Nice thing is, you can tell PolymorphicEmbed that the presence of specific params identifies a certain schema – no need for a “type” field in the params:)
In addition to the advantages that a library offers (get rid of boilerplate code in the app, reusable code across projects, bugfixes, …), it comes with some nice features:
- As mentioned, detect which types to use for the data being
cast-ed, based on fields present in the data (no need for a type field in the data) - Run changeset validations when a
changeset/2function is present (when absent, the library will introspect the fields to cast) - Support for nested polymorphic embeds
- Support for nested
embeds_one/embeds_manyembeds - Display form inputs for polymorphic embeds in Phoenix templates
Added those features in the Readme file.






















