Ecto has_many:通过形式

Myl*_*lly 6 elixir ecto phoenix-framework

我试图has_many :through在Ecto中建立关系,以获得User模型和Group模型之间的许多关系.

我在网上找到的唯一信息与JoséValim 这篇文章中的嵌套属性有关(顺便说一下,这是非常好的).

由于这些组已经存在于系统中,我希望能够进行多选输入.这样做我遇到了几个问题.我不相信可以groups直接在变更集中分配关联,因为每次我尝试这样做时都会收到错误.我的下一个想法是手动完成工作(查找,删除和插入GroupMembership记录),但我不确定这是否是正确的路径,并希望首先得到一些建议.

由于代码示例有很多行,所以我在这里提出了一个要点.

如果我更喜欢直接在这个问题中发布,我当然可以这样做.

感谢您的帮助!

Jos*_*lim 4

不幸的是 Ecto 1.0 不支持多对多。这意味着您需要接收 ID 并为与用户关联的每个组手动构建中间关联。我们希望在未来的版本中使这一切变得更容易。

编辑:Ecto 2.0 支持many_to_many。

  • 确认一下,Ecto 确实支持 has_many :through (通过连接表),只是不支持 Rails 风格的 has_and_belongs_to_many。是对的吗?文档:http://hexdocs.pm/ecto/Ecto.Association.HasThrough.html (2认同)