2016-08-15 3 views
1

id/primary_keyフィールドを持たずにエクトでembeds_manyを使用する方法はありますか?エクトのembeds_many

私のデータベースはこのフィールドに一意のインデックスを持つことに依存し、自動的にキーを挿入すると、この要件が破られます。

答えて

1

はい。 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 
関連する問題