Ecto Commons v0.1.0 EctoCommons.LuhnValidator View Source

This ecto validator checks the provided value is valid using the Luhn algorithm. This is useful for credit cards and other common administrative values.

Example:

iex> types = %{admin_id: :string}
iex> params = %{admin_id: "940008659"}
iex> Ecto.Changeset.cast({%{}, types}, params, Map.keys(types))
...> |> validate_luhn(:admin_id)
#Ecto.Changeset<action: nil, changes: %{admin_id: "940008659"}, errors: [], data: %{}, valid?: true>

iex> types = %{admin_id: :string}
iex> params = %{admin_id: "79026515100052"}
iex> Ecto.Changeset.cast({%{}, types}, params, Map.keys(types))
...> |> validate_luhn(:admin_id)
#Ecto.Changeset<action: nil, changes: %{admin_id: "79026515100052"}, errors: [admin_id: {"is not a valid code", [validation: :luhn]}], data: %{}, valid?: false>

iex> types = %{admin_id: :string}
iex> params = %{admin_id: "this is an incorrect value"}
iex> Ecto.Changeset.cast({%{}, types}, params, Map.keys(types))
...> |> validate_luhn(:admin_id)
#Ecto.Changeset<action: nil, changes: %{admin_id: "this is an incorrect value"}, errors: [admin_id: {"is not a valid code", [validation: :luhn]}], data: %{}, valid?: false>

Link to this section Summary

Link to this section Functions

Link to this function

validate_luhn(changeset, field, opts \\ [])

View Source