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>