8
モデルを更新して関連付けを挿入する単一のチェンジセットを作成しようとしています。私はput_assoc/4
ために見ることができEcto:put_assocを使用して1つの更新でアソシエーションを更新および挿入する方法
** (Ecto.InvalidChangesetError) could not perform update because changeset is invalid.
* Changeset changes
%{order_errors: [%Ecto.Changeset{action: :insert, changes: %{id: nil, inserted_at: nil, order_id: nil, reason: "not_found", updated_at: nil}, constraints: [], errors: [order_id: "can't be blank"], filters: %{}, model: %Proj.OrderError{__meta__: #Ecto.Schema.Metadata<:built>, id: nil, inserted_at: nil, order: #Ecto.Association.NotLoaded<association :order is not loaded>, order_id: nil, reason: nil, updated_at: nil}, optional: [], opts: [], params: %{"reason" => "not_found"}, prepare: [], repo: nil, required: [:order_id, :reason], types: %{id: :id, inserted_at: Ecto.DateTime, order_id: :id, reason: :string, updated_at: Ecto.DateTime}, valid?: false, validations: []}], state: "error"}
* Changeset params
%{"error_count" => 1, "state" => "error"}
* Changeset errors
[]
どれ例:私は、これは次のエラーを出力しput_assoc/4
order = order
|> Proj.Order.changeset(%{state: "error", error_count: order.error_count + 1})
|> Ecto.Changeset.put_assoc(
:order_errors,
[Proj.OrderError.changeset(%Proj.OrderError{}, %{reason: "not_found"})])
|> Proj.Repo.update!
を使用する方法の例を見つけることができませんか?チェンジセットが無効な理由を確認するにはどうすればよいですか?
このようにすることの目標は、新しいorder
にorder_errors
がプリロードされることを願っていることです。