SuperAPI AI 工具集

ecto-schemas

通用与其它

查看项目

更新于 10-16 04:32

技能介绍

用途:在 Elixir 应用中使用 Ecto 定义和操作模式(schema),包括字段类型、关联关系与嵌入模式,以及配套的 changeset 校验。

主要能力:

  • 基础模式定义:use Ecto.Schema,schema "表名" 块中通过 field 声明字段,支持默认值与 timestamps()。
  • 字段类型:字符串、十进制数、整数、布尔、浮点,日期与时间(:date、:naive_datetime、:utc_datetime),复杂类型({:array, :string}、:map、{:map, :string}),二进制(:binary、:binary_id)。
  • 枚举:field :role, Ecto.Enum, values: [:user, :admin, :moderator]。
  • 关联:belongs_to、has_many、has_one、many_to_many(join_through)。
  • 嵌入模式:embedded_schema 配合 embeds_one / embeds_many,通过 cast_embed 处理,可设置 on_replace。
  • 虚拟字段:field ..., virtual: true,不持久化,用于密码确认等敏感数据。
  • changeset:cast、validate_required、validate_format、validate_number、validate_confirmation、unique_constraint 等。

使用方式:定义模块并 use Ecto.Schema,在 schema 块中声明字段与关联,在模块内编写 changeset 函数进行校验与转换。嵌入模式需在父模式中 cast_embed。

适用场景:建模数据库表结构、表达实体间关系、存储嵌套 JSON(嵌入文档)、处理复杂数据类型、实现虚拟计算字段。

限制与注意:需在模式中包含 timestamps();嵌入需处理 on_replace;避免将业务逻辑混入模式;关联需两端都声明;敏感数据建议用虚拟字段;不应在更适合独立表时过度使用嵌入模式。资料未提供安装命令、收费与平台信息。