1
はid
/primary_key
フィールドを持たずにエクトでembeds_many
を使用する方法はありますか?エクトのembeds_many
私のデータベースはこのフィールドに一意のインデックスを持つことに依存し、自動的にキーを挿入すると、この要件が破られます。
はid
/primary_key
フィールドを持たずにエクトでembeds_many
を使用する方法はありますか?エクトのembeds_many
私のデータベースはこのフィールドに一意のインデックスを持つことに依存し、自動的にキーを挿入すると、この要件が破られます。
はい。 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