只有当字段不为零时,如何将字段添加到changeset
?如果值为零,我不想更新数据库中的值。我需要检查3个字段,只更新那些不是零的字段。Ecto changeset - 跳过无字段
当前代码:
put "/products" do
errors = {}
IO.inspect(conn.body_params)
product = Api.Product |> Api.Repo.get(conn.query_params["id"])
IO.inspect(product)
if conn.body_params["image"] do
changeset = Api.Product.changeset(product, %{image: conn.body_params["image"]})
end
if conn.body_params["description"] do
changeset = Api.Product.changeset(product, %{description: conn.body_params["description"]})
end
if conn.body_params["price"] do
changeset = Api.Product.changeset(product, %{price: conn.body_params["price"]})
end
case Api.Repo.update(changeset) do
{:ok, product} ->
errors = Tuple.append(errors, "Product updated")
{:error, changeset} ->
errors = Tuple.append(errors, "Product not updated")
end
conn
|> put_resp_content_type("application/json")
|> send_resp(200, Poison.encode!(%{
successs: "success",
errors: Tuple.to_list(errors)
}))
end
我需要他们能够是零时插入。那么我只需要在这里更新他们,如果他们有价值而不是零。我需要确保它不会导致错误,如果其中一个是零,因为其他的不需要保存。 – BeniaminoBaggins