SuperAPI AI 工具集

ecto-schema-patterns

通用与其它

查看项目

更新于 10-16 08:08

技能介绍

用途:在 Elixir 应用中使用 Ecto 定义数据结构的技能集合,涵盖 schema 定义、字段类型、关联、嵌入 schema 与复杂领域数据建模模式。

主要能力:

  • 基础 schema 定义与 timestamps();字段类型含 string、integer、decimal、boolean、日期时间、Ecto.Enum、map、{:array, :string}、binary,以及 virtual: true 虚拟字段。
  • 嵌入 schema:embedded_schema、embeds_one、embeds_many,可内联定义;可用 cast_embed(:profile, required: true, with: &profile_changeset/2) 绑定自定义 changeset;也可抽取为独立模块。
  • 关联:belongs_to、has_one、has_many、many_to_many;join_through 可指表名或 join schema(如 MyApp.UserOrganization),join schema 可加 role、joined_at 等字段;on_replace: :delete 控制更新行为。
  • 主键:@primary_key false 配合 belongs_to primary_key: true 实现复合主键;@primary_key {:sku, :string, autogenerate: false} 自定义主键。
  • 元数据:通过 MyApp.User.schema(:source)、schema(:fields)、schema(:primary_key)、schema(:associations)、schema(:type, :name) 在运行时读取 schema 信息。
  • 其他模式:自引用关联(join_keys: [person_id: :id, relation_id: :id])、多态关联(commentable_id + commentable_type)、虚拟字段计算(build_full_name)、:source 映射遗留库列名、@schema_prefix 与查询 prefix: "tenant_#{tenant_id}" 支持多租户。

适用场景:定义数据库支撑的领域模型、嵌套结构、层级或自引用数据、遗留数据库字段映射、多租户应用、非标准或复合主键、结构化未知数据存储、多态关联。

限制与注意:资料未提供该技能的安装方式、收费标准、平台支持或版本要求。多态关联并非 Ecto 内置,仅由 ID 与类型字段组合实现;元数据函数建议谨慎用于元编程;嵌入数据存储于父表 JSON/映射列而非独立表。