我有一个 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
最佳答案
你应该在 Ecto.Type
之后实现你自己的类型行为。
在该类型中,您可以添加一个 autogenerate/0
函数,这是您的 gen_id
函数,为您生成 id。
要查看此类的完整示例,您可以查看 Ecto.UUID
这里有你要的一切。
关于elixir - Ecto:自定义 binary_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41749936/