ecto_fields v1.1.0 EctoFields.Static
Coerce a regular string into an atom
Examples
iex> defmodule Test do
...> import EctoFields.Static
...> static_field(UserType, "admin")
...> end
...> Test.UserType.cast(nil)
{:ok, "admin"}
iex> Test.UserType.cast("superadmin")
:error
iex> Test.UserType.cast("admin")
{:ok, "admin"}
Typical usage in Ecto schemas looks like this:
iex> defmodule Truck do
...> use Ecto.Schema
...> import EctoFields.Static
...>
...> static_field(Type, "truck")
...> static_field(Foo, "bar")
...>
...> schema "vehicles" do
...> field :type, Type
...> field :license_plate, :string
...> field :make, :string
...> end
...> end
...> Truck.Type.cast(nil)
{:ok, "truck"}
iex> Truck.Foo.cast(nil)
{:ok, "bar"}