Ecto v2.0.0-beta.1 Ecto.DataType protocol
Casts a given data type into an Ecto.Type
.
While Ecto.Type
allows developers to cast/load/dump
any value from the storage into the struct based on the
schema, Ecto.DataType
allows developers to convert
existing data types into existing Ecto types, be them
primitive or custom.
For example, Ecto.Date
is a custom type, represented
by the %Ecto.Date{}
struct that can be used in place
of Ecto’s primitive :date
type. Therefore, we need to
tell Ecto how to convert %Ecto.Date{}
into :date
and
such is done with the Ecto.DataType
protocol:
defimpl Ecto.DataType, for: Ecto.Date do
# Dumps to the default representation. In this case, :date.
def dump(value) do
cast(value, :date)
end
# Implement any other desired casting rule.
def cast(%Ecto.Date{day: day, month: month, year: year}, :date) do
{:ok, {year, month, day}}
end
def cast(_, _) do
:error
end
end
Summary
Types
t :: term