Ja. embeds_many in Postgres endet als ein Array von JSON. Definieren Sie ein Modul, das diese JSON-Daten darstellt, und verwenden Sie in der Definition von embedded_schema @primary_key false. Angenommen, Sie möchten ein Array von Schlüssel/Wert-Paaren in jeder Zeile speichern. Nennen wir sie Tags. Sie könnten das wie unten definieren und Sie hätten keinen generierten Primärschlüssel für jedes Element im Array. Sie könnten ein anderes Feld innerhalb dieses Schemas haben, das auf die für Ihre App sinnvolle Weise ausgefüllt wird.
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