fschuindt
Hi there, folks. I’m struggling with this issue for quite some time… It’s with Ecto embedded schemas…
Consider the following:
Orders embeds many Items.
I have the following on the Order schema:
embeds_many :items, Schemas.Order.Item, on_replace: :delete
In the same Schema, I have created the following function:
@doc """
Updates a given `t:OPS.DataBase.Schemas.Order/0` in the
database. (Permits the update of the "items" embeded schema)
"""
@spec update_with_items(t(), map(), list(Schemas.Order.Item.t())) :: response()
def update_with_items(order, params, items) do
order
|> cast(params, @update_params)
|> put_embed(:items, items)
|> Repo.update()
end
So for a given Order, I can update some parameters on it, but also can update the list of Items.
It does update the parameters, but will not update the list of items.
Here’s a example of the list of items I’m passing to the function:
[
%OPS.DataBase.Schemas.Order.Item{
id: "4e903100-07ff-4096-b0f0-8bc88c50c630",
image: "image",
name: "item 1",
picked: false,
price: nil,
product_id: 987654,
quantity: 2,
supplier_store_id: "64ac2f41-dcf4-43d1-82b7-da994c99ba57",
title: nil,
variant_id: 99999,
variant_title: "variant_title",
vendor: "vendor"
},
%OPS.DataBase.Schemas.Order.Item{
id: "b8972930-9d94-470a-90ad-abcf67c3c57e",
image: "image",
name: "item 2",
picked: false,
price: nil,
product_id: 657321,
quantity: 2,
supplier_store_id: "454545454545",
title: nil,
variant_id: 88888,
variant_title: "variant_title",
vendor: "vendor"
}
]
This is during my tests, and it’s not updating the Items of an Order.
Note that those items contains the ID already, I don’t think those matter to be honest, but I’m about to remove them to see if it works.
I’m kinda clueless here, any help/tip will be welcome.
Thank you!
Trending in Questions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #ai
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 1- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
tfwright
Passing a list including ids should work fine. I haven’t had any trouble doing that. What is the output of the function? If it’s not raising an error, my first guess would be this behavior described in the docs: