SuperAPI AI 工具集

ecto-nested-associations

写作与研究

查看项目

更新于 10-15 22:16

技能介绍

用途:这是一个针对 Elixir Ecto 嵌套关联与多表操作的规范型技能,要求在编写 cast_assoc、cast_embed、Ecto.Multi 或级联操作前调用,用于统一嵌套关联的处理方式。

主要能力与规则:has_many/has_one 使用 cast_assoc/3,不手动分步插入子记录;跨不相关多表的操作使用 Ecto.Multi,但嵌套关联不用 Ecto.Multi;迁移中显式设置 on_delete,被拥有的子记录用 :delete_all,独立实体用 :nothing;外键列必须建索引;列表管理用 on_replace: :delete;更新关联前先 preload,因为 cast_assoc 会与已加载数据比较;子 changeset 不要要求外键字段,cast_assoc 会自动设置;多表操作使用 Repo.transaction/1 配合 Ecto.Multi 保证原子性。

使用方式:资料给出端到端流程,包括判断归属关系、定义 schema、创建含外键与索引的迁移、定义 changeset、实现上下文函数、用模式匹配处理结果、编写创建/更新/错误测试。示例展示 cast_assoc 嵌套创建、失败处理(顶层错误在 changeset.errors,嵌套错误在 changeset.changes[:comments])、带 on_replace 的更新(省略项被删除)、Ecto.Multi 处理不相关表及其结果匹配、on_delete 迁移写法,以及用 \d comments 验证外键索引。多对多用带连接 schema 的 many_to_many 配合 cast_assoc。

适用场景:Elixir/Phoenix 项目中的嵌套创建与更新、列表管理、多表事务和级联删除。

限制:资料未提供安装命令、版本要求、性能数据或收费信息;主要针对 Ecto 关联模式,不含其他 ORM 的说明。