16

Ecto に関連付けられたモデルが存在することをどのように検証できますか?

schema "foo" do
  has_many: bar, Bar

  timestamps
end

@required_fields ~w(bar) # invalid

そうする方法はありますか?そして、これらのフィールドの最小/最大数を検証しますか?

4

1 に答える 1

20

まだ何もありません。changesetただし、関数でこれらの検証を自分で実行できます。

def changeset(model, params) do
  model
  |> cast(...)
  |> validate_bar_association()
end

def validate_bar_association(changeset) do
  bar = changeset.model.bar
  cond do
    bar == nil ->
      add_error changeset, :bar, "No bar"
    length(bar) < 5 ->
      changeset
    true ->
      add_error changeset, :bar, "waaaay too many"
  end
end

入れ子になった関連付けを改善したいのですが、優先度リストの上位にある他の項目があります。:)

于 2015-06-27T09:18:37.393 に答える