Ecto.Enum
A custom type that maps atoms to strings.
Ecto.Enum
must be used whenever you want to keep atom values in a field. Since atoms cannot be persisted to the database, Ecto.Enum
converts them to string when writing to the database and converts them back to atoms when loading data. It can be used in your schemas as follows:
field :status, Ecto.Enum, values: [:foo, :bar, :baz]
Composite types, such as :array
, are also supported:
field :roles, {:array, Ecto.Enum}, values: [:Author, :Editor, :Admin]
:values
must be a list of atoms. String values will be cast to atoms safely and only if the atom exists in the list (otherwise an error will be raised). Attempting to load any string not represented by an atom in the list will be invalid.
The helper function values/2
returns the values for a given schema and field, which can be used in places like form drop-downs. For example, given the following schema:
defmodule EnumSchema do use Ecto.Schema schema "my_schema" do field :my_enum, Ecto.Enum, values: [:foo, :bar, :baz] end end
you can call values/2
like this:
> Ecto.Enum.values(EnumSchema, :my_enum) [:foo, :bar, :baz]
Summary
Functions
Functions
values(schema, field)
© 2013 Plataformatec
© 2020 Dashbit
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/ecto/Ecto.Enum.html