Magik.EctoEnum (Magik v0.6.0) View Source

EctoEnum helps to generate enum type and enum helper function.

You can define an enum module manually like this

defmodule MyEnum do
    def enum, do: ["value1", "value2", "value3"]
    def value1, do: "value1"
    def value2, do: "value2"
    def value3, do: "value3"
end

Now with EctoEnum you can do it with a few lines of code

defmodule MyEnum do
    use Magik.EctoEnum, ["value1", "value2", "value3"]
end

It still provides same functions with manual implemented module

Use in ecto schema

EctoEnum also defines a Type module that you can used directly in Ecto schema

defmodule Order do
  schema "orders do
    field :first_name, :string
    field :last_name, :string
    field :status, MyEnum.Type
  end
end

EctoEnum automatically validate value and only allow valid value