Ben bu (basitleştirilmiş) şema ile bir adres için bir ecto modeli vardır:Koşullu bir zorunlu alan nasıl eklenir?
Ben ülke beyaz listede olduğunu, ancak eğer sadece yapamam ama yerine opsiyonel gerekli şekildezip
işaretlemek istediğiniz
defmodule Address do
use Ecto.Model
schema "addresses" do
field :zip, :string
field :country, :string
# snip
end
@countries_requiring_zip ~w(US) # snip
def changeset(model, params \\ :empty) do
model
|> cast(params, ~w(country), ~w(zip))
|> validate_zip
end
defp validate_zip(changeset) do
if get_field(changeset, :country) in @countries_requiring_zip do
# ????
end
changeset
end
end
Doğrulamayı yazmanın temiz bir yolunu bulmak. Bu kısıtlamayı nasıl ekleyebilirim?