Mam modelu ekto dla adresu z tego schematu (uproszczony):Jak dodać wymagane pole warunkowe?
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
Chcę zaznaczyć zip
wymagane zamiast opcjonalne, ale tylko wtedy, gdy kraj znajduje się na białej liście, ale nie mogę wymyślić czysty sposób napisania sprawdzania poprawności. Jak dodać to ograniczenie?