用途:在 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;避免将业务逻辑混入模式;关联需两端都声明;敏感数据建议用虚拟字段;不应在更适合独立表时过度使用嵌入模式。资料未提供安装命令、收费与平台信息。