Oof, I’m so confused now- so if I use empty_values: [nil]
, then after casting a %{subject: nil
}, I’ll have changes: %{subject: ""}
Then the validate_change
will be called with an empty string (so I actually don’t need it anymore, it looks like nil
can’t make it through the cast).
defp validate_not_null(changeset, fields) do
Enum.reduce(fields, changeset, fn field, changeset ->
validate_change(changeset, field, fn
field, nil -> [{field, "can't be empty"}]
_, _ -> []
end)
end)
end
Without adding empty_values: [nil]
, my changes are %{subject: nil}
, and my validateChange is never called. I think that’s expected behaviour: `Ecto.Changeset.validate_change` and setting fields to `nil` - #3 by josevalim