【发布时间】:2018-07-31 13:22:44
【问题描述】:
我正在尝试在 Ecto 中建立 has_many :through 关系,以实现 User 模型和 Group 模型之间的多对多关系。
我能在网上找到的唯一信息与 José Valim here 的帖子中的嵌套属性有关(顺便说一句,这很好)。
由于系统中已经存在组,我希望进行多选输入。我在这样做时遇到了几个问题。我不相信可以直接在变更集中分配groups 关联,因为每次尝试这样做时都会出错。我的下一个想法是手动完成这项工作(查找、删除和插入 GroupMembership 记录),但是我不确定这是否是正确的路径,并想先获得一些建议。
由于代码示例有很多行,我提出了一个要点here。
如果我希望我直接在这个问题中发布它,我当然可以这样做。
感谢大家的帮助!
【问题讨论】:
-
我不会讲 Ecto 代码,但我可以讲 DB 设计原则。关系数据库排序会告诉您不能对 n 到 n 关系建模。您所做的是构建一个关系表(在您的情况下类似于 UsersInGroups),然后构建一个从用户和组到该表的 1-n。我不确定它是否会帮助您解决 Ecto 问题,但它可能是一种更好的数据建模方式。 FWIW。
标签: elixir phoenix-framework ecto