1
有沒有什麼辦法在Ecto中使用embeds_many
而沒有id
/primary_key
字段?Ecto embeds_many無編號
我的數據庫依賴於在此字段上具有唯一索引,並且ecto會自動插入密鑰來打破此要求。
有沒有什麼辦法在Ecto中使用embeds_many
而沒有id
/primary_key
字段?Ecto embeds_many無編號
我的數據庫依賴於在此字段上具有唯一索引,並且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