У меня есть модель экто для адреса с этим (упрощенной) схеме:Как добавить условное обязательное поле?
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
Хочу отметить zip
по мере необходимости, а не по желанию, но только тогда, когда страна находится в белом списке, но я не могу выяснить чистый способ написания проверки. Как добавить это ограничение?