FlyingNoodle

FlyingNoodle

Run calculation on an has_many relation?

Is it possible to run a calculation on a calculation in another resource?

# resource user
attributes do
  attribute :type, :atom do
    constraints [one_of: [:m, :f, :mf]]
  end

  calculations do
    calculate :nr_of_people, :integer, expr(if sex == :mf do 2 else 1 end)
  end
end

# resource reservation
relationships do
  belongs_to :event, TimeTracer.Events.Event, allow_nil?: false, attribute_writable?: true
  belongs_to :user, TimeTracer.Accounts.User, allow_nil?: false
end

calculations do
  calculate :nr_of_guests, :integer do
    load :user
    calculation expr(user.nr_of_people)
  end
end

# in event resource
relationships do
  has_many :reservations, TimeTracer.Events.Reservation
end

calculations do
  calculate :nr_of_guests, :integer do
    # no idea? should be something like sum(reservations, :nr_of_guests) but that doesnt work
  end
end

First Post!

zachdaniel

zachdaniel

Creator of Ash

What we call “inline aggregates” work roughly the way you’ve suggested, but the second argument is a keyword list:

calculations do
  calculate :nr_of_guests, :integer, expr(sum(reservations, field: :nr_of_guests))
end

Alternatively, in this case you could use a regular aggregate.

aggregates do
  sum :nr_of_guests, [:reservations], :nr_of_guests
end

Or express it a bit more directly going all the way to user:

aggregates do
  sum :nr_of_guests, [:reservations, :user], :nr_of_people
end

Where Next?

Popular in Questions Top

Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
shahryarjb
Hello, I get Persian date from my client and convert it to normal calendar like this: def jalali_string_to_miladi_english_number(persi...
New
earth10
Hi, I’m just starting to build a side-project with Elixir and Phoenix and doing some basic test with Elixir alone. What strikes me is th...
New
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New
Emily
I have VueJS GUIs with the project generated using Webpack. I have Elixir modules that will need to be used by the VueJS GUIs. I forese...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
fayddelight
I tried installing elixir 1.11.2 erlang 23.3.4 via asdf in my zsh shell. Enabled the versions locally and globally. When I list them ...
New
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
New
komlanvi
Hi everyone, I was playing with phoenix liveView but I run into an issue. I have a form and want to validate each input text when the te...
New

Other popular topics Top

lastday4you
I wanted to check elixir version in phoenix because i found that my elixir is 1.5 but when i use Enum.chunk_by it said the function is un...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New
jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
axelson
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!) This post collects co...
239 47930 226
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
AstonJ
Seen any cool LiveView demos, sample apps or examples? Please post them here! :003:
New
hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => ...
New
svb
Hi! Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New

We're in Beta

About us Mission Statement