mirror of
https://github.com/ash-project/ash.git
synced 2024-09-20 21:43:02 +12:00
fix: clean up relationship validation logic
This commit is contained in:
parent
91129aac8a
commit
86e171bae9
1 changed files with 14 additions and 9 deletions
|
@ -325,6 +325,19 @@ defmodule Ash.Actions.ManagedRelationships do
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp keep_relationships_to_validate(relationships, changeset, true) do
|
||||||
|
Enum.filter(relationships, fn relationship ->
|
||||||
|
changeset.relationships[relationship.name] &&
|
||||||
|
!changeset.context[:private][:error][relationship.name]
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp keep_relationships_to_validate(relationships, changeset, false) do
|
||||||
|
Enum.filter(relationships, fn relationship ->
|
||||||
|
!changeset.context[:private][:error][relationship.name]
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
def validate_required_belongs_to(changeset_instructions_or_error, preflight? \\ true)
|
def validate_required_belongs_to(changeset_instructions_or_error, preflight? \\ true)
|
||||||
def validate_required_belongs_to({:error, error}, _), do: {:error, error}
|
def validate_required_belongs_to({:error, error}, _), do: {:error, error}
|
||||||
|
|
||||||
|
@ -332,15 +345,7 @@ defmodule Ash.Actions.ManagedRelationships do
|
||||||
changeset.resource
|
changeset.resource
|
||||||
|> Ash.Resource.Info.relationships()
|
|> Ash.Resource.Info.relationships()
|
||||||
|> Enum.filter(&(&1.type == :belongs_to && &1.required?))
|
|> Enum.filter(&(&1.type == :belongs_to && &1.required?))
|
||||||
|> Enum.reject(fn relationship ->
|
|> keep_relationships_to_validate(changeset, preflight?)
|
||||||
errored? = changeset.context[:private][:error][relationship.name]
|
|
||||||
|
|
||||||
if preflight? do
|
|
||||||
errored? || not_changing?
|
|
||||||
else
|
|
||||||
errored?
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
|> Enum.reduce({changeset, instructions}, fn required_relationship,
|
|> Enum.reduce({changeset, instructions}, fn required_relationship,
|
||||||
{changeset, instructions} ->
|
{changeset, instructions} ->
|
||||||
changeset =
|
changeset =
|
||||||
|
|
Loading…
Reference in a new issue