gpt4 book ai didi

Ecto embeds_many 没有 id

转载 作者:行者123 更新时间:2023-12-04 12:20:04 25 4
gpt4 key购买 nike

有什么办法可以用embeds_many在 Ecto 没有 id/primary_key field ?

我的数据库依赖于在这个字段上有一个唯一的索引,而 ecto 自动插入键打破了这个要求。

最佳答案

是的。 Postgres 中的 embeds_many 最终是一个 JSON 数组。定义一个表示 JSON 数据的模块,并在embedded_schema 的定义中使用@primary_key false。例如,假设您想在每一行上存储一个键/值对数组。我们称它们为标签。您可以像下面那样定义它,并且在数组中的每个元素上都没有生成主键。您可以在该架构中拥有另一个字段,该字段将以对您的应用程序有意义的任何方式填充。

  defmodule MyApp.Tag do
use MyApp.Web, :model

@primary_key false
embedded_schema do
field :key, :string
field :value, :string
end

def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:key, :value])
|> validate_required([:key])
end
end

关于Ecto embeds_many 没有 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38949098/

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