Fix: Add tenant attribute to identity attributes on upserts (#565)

This commit is contained in:
Mariusz Morawski 2023-04-16 16:44:20 +02:00 committed by GitHub
parent 54f65b4d6f
commit 8686cc9417
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -303,14 +303,22 @@ defmodule Ash.Actions.Create do
Ash.Resource.Info.primary_key(changeset.resource) Ash.Resource.Info.primary_key(changeset.resource)
identity -> identity ->
changeset.resource keys =
|> Ash.Resource.Info.identities() changeset.resource
|> Enum.find(&(&1.name == identity)) |> Ash.Resource.Info.identities()
|> Kernel.||( |> Enum.find(&(&1.name == identity))
raise ArgumentError, |> Kernel.||(
"No identity found for #{inspect(changeset.resource)} called #{inspect(identity)}" raise ArgumentError,
) "No identity found for #{inspect(changeset.resource)} called #{inspect(identity)}"
|> Map.get(:keys) )
|> Map.get(:keys)
if changeset.tenant &&
Ash.Resource.Info.multitenancy_strategy(changeset.resource) == :attribute do
[Ash.Resource.Info.multitenancy_attribute(changeset.resource) | keys]
else
keys
end
end end
changeset = set_tenant(changeset) changeset = set_tenant(changeset)