Я пытаюсь обновить некоторые данные в таблице mysql.Я использую Ecto для выполнения операций с базой данных.
Таблица пользователей имеет связь с ItemsPurchased
, has_many
и belongs_to
, как показано ниже:
schema "sales_orders" do
field(:total_bill, :float)
field(:quantity, :integer)
field :sales_order_id, :integer
has_many :items_purchased, Orders.ItemsPurchased, on_replace: :delete
timestamps()
end
schema "items_purchased" do
field :item_id, :string
field :product, :string
field :description, :string
field :picture, :string
field :quantity, :integer
field :required_total_bill, :decimal
belongs_to(:sales_order, Orders.SalesOrder)
timestamps()
end
schema "sales_orders" do
field(:quantity, :integer)
field(:so_date, :utc_datetime)
field :sales_order_id, :integer
has_many :sales_order_line_items,
Orders.SalesOrderLineItem, on_replace: :delete
timestamps()
end
Проблемаздесь, когда я пытаюсь обновить items_purchased, ecto changeset вставляет пустые данные.Ниже приведен набор изменений:
Ecto.Changeset.put_assoc(inserted_so, :items_purchased, items_purchased)
#Ecto.Changeset<
action: nil,
changes: %{
total_bill: 300.0,
items_purchased: [
#Ecto.Changeset<action: :replace, changes: %{}, errors: [],
data: #Orders.ItemsPurchased<>, valid?: true>,
#Ecto.Changeset<
action: :insert,
changes: %{
"description" => "white",
"item_id" => "88-1",
"product" => "tee",
"quantity" => 50,
"required_total_bill" => "500"
},
errors: [],
data: #Orders.ItemsPurchased<>,
valid?: true
>
]
},
errors: [],
data: #Orders.SalesOrder<>,
valid?: true
>
Вывод Repo.update с put_assoc:
** (Ecto.StaleEntryError) attempted to delete a stale struct:
Может кто-нибудь дать мне знать, что с этим не так?
Спасибо, S