You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As mentioned in my Elixir forum thread here, I notice that the schema validation errors on polymorphic embeddings are very non-descriptive.
E.g. if I have a schema with a polymorphic embed on :children and data where one of those children has an invalid type field, then casting it with changeset results in an Ecto.Changeset struct with changeset.errors == [children: {"is invalid", []}]. Note that this does not contain any info about the particular element within :children that caused the error, or what the underlying error actually was.
See lib/schema.ex and test/schema_test.exs to see what I mean. I’ve added some tests that show the current behaviour and the behaviour that would be desirable (and that would be more akin to what Ecto does for embeds_many).
I found that this line is where the indescriptive error is added. I feel like it should be possible to add a more descriptive error in the Enum.map before it, i.e. here. Although I'm not sure what would be necessary to make it behave more like Ecto's embed_one and embed_many as shown in my example project's test case. It might be dependent on #74 but I'm not sure.
What would be the best solution for this?
The text was updated successfully, but these errors were encountered:
Hi @mathieuprog, how are you? :)
As mentioned in my Elixir forum thread here, I notice that the schema validation errors on polymorphic embeddings are very non-descriptive.
E.g. if I have a schema with a polymorphic embed on
:children
and data where one of those children has an invalid type field, then casting it withchangeset
results in anEcto.Changeset
struct withchangeset.errors == [children: {"is invalid", []}]
. Note that this does not contain any info about the particular element within:children
that caused the error, or what the underlying error actually was.I’ve created a minimal working example in a GitHub repo here just to illustrate the point a bit better: https://github.com/bvobart/polymorphic-embed-errors-mwe
See
lib/schema.ex
andtest/schema_test.exs
to see what I mean. I’ve added some tests that show the current behaviour and the behaviour that would be desirable (and that would be more akin to what Ecto does forembeds_many
).I found that this line is where the indescriptive error is added. I feel like it should be possible to add a more descriptive error in the
Enum.map
before it, i.e. here. Although I'm not sure what would be necessary to make it behave more like Ecto'sembed_one
andembed_many
as shown in my example project's test case. It might be dependent on #74 but I'm not sure.What would be the best solution for this?
The text was updated successfully, but these errors were encountered: