Ecto Custom Field Validation
Minimal snippet to define a custom validation for a field in Elixir’s Ecto library.
# declare this in your schema file
defp validate_language(changeset, field, options \\ []) do
validate_change(changeset, field, fn _, str ->
case str in ["en", "de"] do
true -> []
false -> [{field, options[:message] || "Invalid Language"}]
end
end)
end
# use it like this
# ...
changeset
|> validate_language(:my_field_name)
# ...
This minimal example validates that a given string field contains only allowed values. In this case, language codes are used.