Magik.EctoEnum (Magik v0.9.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 different name and value
In some case, you want to use a different name instead of the same with value, you can pass a tuple like this
defmodule MyEnum do
use Magik.EctoEnum, {name1: "Value 1", name2: "value 2"}
end
MyEnum.name1()
# => "Value 1"
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