Skip to content

Instantly share code, notes, and snippets.

@ventsislaf
Created October 8, 2015 10:34
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ventsislaf/42ac95ec6c0273ddd068 to your computer and use it in GitHub Desktop.
Save ventsislaf/42ac95ec6c0273ddd068 to your computer and use it in GitHub Desktop.
Normalize data in Ecto before insert to DB

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment