Parameterized Ecto type for whitelist-based atom enum fields.
Requires values: — a list of atoms allowed for the field. Values are stored
as strings in the database. Cast, load, and dump use SafeAtom.cast/2 so
external binaries never go through String.to_atom/1 or
String.to_existing_atom/1.
Schema
field :role, SafeAtom.Ecto.Enum, values: [:user, :guest]Examples
iex> params = SafeAtom.Ecto.Enum.init(values: [:user, :guest])
iex> SafeAtom.Ecto.Enum.cast("user", params)
{:ok, :user}
iex> params = SafeAtom.Ecto.Enum.init(values: [:user, :guest])
iex> SafeAtom.Ecto.Enum.cast("admin", params)
{:error, [validation: :inclusion, enum: [:user, :guest]]}
iex> params = SafeAtom.Ecto.Enum.init(values: [:user, :guest])
iex> SafeAtom.Ecto.Enum.dump(:user, fn _, v -> {:ok, v} end, params)
{:ok, "user"}