gpt4 book ai didi

elixir - 克隆 Ecto 记录。带有嵌入和相关记录?

转载 作者:行者123 更新时间:2023-12-04 21:35:58 24 4
gpt4 key购买 nike

克隆 Ecto 模型/记录的最简单方法是什么?我有一个包含许多成分和嵌入标签的示例食​​谱模型。

模型

defmodule App.Recipe do
use App.Web, :model

schema "recipes" do
field :name, :string
has_many :ingredients, App.Ingredient
embeds_many :labels, App.Label
end

克隆配方记录
如何克隆配方记录并创建用于插入新配方记录的变更集?
recipe = Repo.get(App.Recipe, 1)
recipe_changeset = Ecto.Changeset.change(recipe)

# ... Steps for cloning record with embeds?

new_recipe = Repo.insert(recipe_changeset)

克隆配方和配料,并为配料分配新的配方 ID

如何克隆带有预加载成分的配方记录,以便插入包含新成分的新配方记录?
recipe = Repo.get(App.Recipe, 1)
|> Repo.preload(:ingredients)
recipe_changeset = Ecto.Changeset.change(recipe)

# ... Steps for cloning records?

new_recipe = Repo.insert(recipe_changeset)

最佳答案

只需在再次插入之前删除该 ID。

Repo.get(App.Recipe, 1)
|> Repo.preload(:ingredients)
|> whatever_you_wanna_do
|> Map.delete(:id)
|> Repo.insert

关于elixir - 克隆 Ecto 记录。带有嵌入和相关记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38117448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com