Magik.EctoEnum (Magik v0.11.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
Use Enum integer
You can specify type of column in database, default is string
defmodule MyEnum do
use Magik.EctoEnum, enum: [name1: 1, name2: 2], type: :integer
end