Example code:
def changeset(model, params \\ :empty) do
model
|> cast(params, @required_fieds, @optional_fields)
|> validate_length(:code, is: 2)
|> normalize_code
end
defp normalize_code(changeset) do
case changeset do
%Ecto.Changeset{valid?: true, changes: %{code: code}} ->
put_change(changeset, :code, String.upcase(code))
_ ->
changeset
end
end