Ecto:自定义binary_id

时间:2017-01-19 19:17:58

标签: elixir ecto

我有一个Ecto模型,我希望使用elixir函数生成的自定义binary_id存储在数据库中。这可能吗?

我的id功能如下所示:

def gen_id
    String.upcase to_string Enum.take_random('abcdefghjkmnpqrstuvwxyz123456789', 8)
end

我的架构如下所示:

schema "orders" do
    belongs_to :type, Invoicer.Customer
    @primary_key {:id, :binary_id, autogenerate: true}
    field :order_details, :string

    timestamps()
end

1 个答案:

答案 0 :(得分:2)

您应该按照Ecto.Type行为实现自己的类型。

在该类型中,您可以添加autogenerate/0函数,即gen_id函数,为您生成ID。

要查看此类内容的完整示例,您可以查看Ecto.UUID,其中包含您要求的所有内容。