首页 > 解决方案 > 如何在同一页面上使用多个变更集

问题描述

我必须同时更新 3 个表。一页有 3 个变更集。

如果我用 发布 3 个 chagnesets form_for,我该如何编写代码?3张表如下。

---------
 members
---------
id
name

----------------
 member_details  
----------------
member_id
address
phone_no

--------------
 member_items
--------------
member_id
item_id

或者另一种方式将受到欢迎。

标签: elixirphoenix-frameworkecto

解决方案


我遇到了和你类似的问题。您不需要 3 个变更集。您需要的是一个embedded_schema包含您要插入的 3 个顶级元素的元素。然后,当您提交表单时,您可以调用与您尝试插入的元素相对应的每个变更集。最后,您在 other 中使用 Ecto.Multi 或 Repo.transaction 使此操作全部失败或全部成功。查看有关其工作原理的架构文档的顶部描述(特别是 SignUp 示例)。https://hexdocs.pm/ecto/Ecto.Schema.html


推荐阅读