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
I'm probably doing something a bit weird, but I wanted to see if calculations on embedded resources somehow had access to their parent resource.
(I find myself wanting something like this fairly often, or eg. loading one calculation on a top level resource and passing data from the result down through relationships to be stored on the children)
So I whipped up this:
defmoduleMyApp.Dispatch.EmailRecipientdouseAsh.Resource,data_layer: :embedded# lots of other code calculationsdocalculate:foo,:string,fnone,two->dbg()"foo"endendend
This resource is embedded in a Payload resource (which is a union, but I don't think that matters), which is then embedded in a Notification resource.
So I loaded a Notification and went into it to get the EmailRecipient:
iex(1)> n = Ash.get!(MyApp.Dispatch.Notification, "0043864d-15be-4ce2-876c-57d0171d2fd8")
#MyApp.Dispatch.Notification<...>
iex(3)> r = hd(n.payload.value.recipients)
#MyApp.Dispatch.EmailRecipient<
foo: #Ash.NotLoaded<:calculation, field: :foo>,
...
>
And then tried to load the foo calculation:
iex(4)> Ash.load(r, :foo)
** (Ash.Error.Framework.AssumptionFailed) Assumption failed: got a query without a domain
This should not be possible, please report a detailed bug at:
https://github.com/ash-project/ash/issues/new?assignees=&labels=bug%2C+needs+review&template=bug_report.md&title=
(ash 3.4.38) lib/ash/actions/read/read.ex:41: Ash.Actions.Read.run/3
(ash 3.4.38) lib/ash.ex:1858: Ash.load/3
(ash 3.4.38) lib/ash.ex:1812: Ash.load/3
iex:4: (file)
Using reuse_values?: true also raises the same error.
It tells me to report a bug, so here I am!
Expected behavior
I'd get the debug printout of whatever the calculation sees, to answer my question if somehow it knows about where its embedded in (I suspect the answer is no, but still). And the calculation would successfully calculate the value "foo".
Runtime
Elixir version 1.16.3-otp-26
Erlang version 26.2.5.1
OS macOS Sonoma
Ash version 3.4.38
The text was updated successfully, but these errors were encountered:
Hmmm... you could try configurIng a domain on the embedded resource, or specifying the domain option to Ash.load. If we can't determine a domain then we can't do any action logic, so we probably just need a better error message there?
I've not actually used embedded resources before, so if they're not supposed to be used like this, that's fine! This issue is here for posterity if other people try to do it and wonder why it doesn't work :)
I'll give those options a go in the morning - but I don't think a domain should be specified on an embedded resource, should it? Or can you embed a resource cross-domain?
We may actually prevent specifying a domain on an embedded resource now that I think of it. The idea is that since they are meant to be used as a type, their domain would always be inherited from whichever resource contains them.
I forget, you may have to try it out to confirm. But I do think specifying the domain option ought to be supported.
Describe the bug
I'm probably doing something a bit weird, but I wanted to see if calculations on embedded resources somehow had access to their parent resource.
(I find myself wanting something like this fairly often, or eg. loading one calculation on a top level resource and passing data from the result down through relationships to be stored on the children)
So I whipped up this:
This resource is embedded in a
Payload
resource (which is a union, but I don't think that matters), which is then embedded in aNotification
resource.So I loaded a Notification and went into it to get the EmailRecipient:
And then tried to load the
foo
calculation:Using
reuse_values?: true
also raises the same error.It tells me to report a bug, so here I am!
Expected behavior
I'd get the debug printout of whatever the calculation sees, to answer my question if somehow it knows about where its embedded in (I suspect the answer is no, but still). And the calculation would successfully calculate the value "foo".
Runtime
The text was updated successfully, but these errors were encountered: