fix: prepare_change_array on embedded types needs to handle nil

fix: handle_change_array on embedded types needs to honor `nil`
This commit is contained in:
Zach Daniel 2023-10-04 13:59:26 -04:00
parent c691eb022c
commit c2872b5181
2 changed files with 9 additions and 1 deletions

View file

@ -80,6 +80,7 @@ defmodule Ash.DataLayer do
| {:aggregate_relationship, Ash.Resource.Relationships.relationship()}
| {:query_aggregate, Ash.Query.Aggregate.kind()}
| :select
| :expression_calculation_sort
| :aggregate_filter
| :aggregate_sort
| :boolean_filter

View file

@ -478,7 +478,10 @@ defmodule Ash.EmbeddableType do
end
def handle_change_array(old_values, nil, constraints) do
handle_change_array(old_values, [], constraints)
case handle_change_array(old_values, [], constraints) do
{:ok, []} -> {:ok, nil}
other -> other
end
end
def handle_change_array(old_values, new_values, constraints) do
@ -522,6 +525,10 @@ defmodule Ash.EmbeddableType do
end
end
def prepare_change_array(nil, _new_uncasted_values, _constraints) do
{:ok, nil}
end
def prepare_change_array(old_values, new_uncasted_values, constraints) do
pkey_fields = Ash.Resource.Info.primary_key(__MODULE__)