使用 Ecto 持久化数据
1. 自定义字段类型
Ecto 除了支持开箱即用的字段类型(如 :string 、 :integer 和 :map )外,还允许定义自定义类型。要创建自定义类型模块,需实现 Ecto.Type 行为。这里将创建一个自定义的 Ksuid Ecto 类型,用作所有模式的主键。
KSUIDs(K - 可排序唯一标识符)和 UUID 一样安全且随机,还具有按字典顺序排序的特性。这些标识符长 20 字节,字符串表示始终为 27 个字符。
操作步骤如下:
1. 在 elixir_drip 伞形应用的 mix.exs 文件中添加 ksuid 库依赖,即把 {:ksuid, "~> 0.1.2"} 添加到 deps/0 函数返回的列表中。
2. 创建以下模块:
defmodule ElixirDrip.Ecto.Ksuid do
@behaviour Ecto.Type
def type, do: :string
def cast(ksuid)
when is_binary(ksuid) and byte_size(ksuid) == 27, do: {:ok, ksuid}
def cast(_), do: :error
def load(ksuid), do: {:
超级会员免费看
订阅专栏 解锁全文
13

被折叠的 条评论
为什么被折叠?



