【问题标题】:Ecto build multiple assocEcto 构建多个关联
【发布时间】:2017-03-13 01:22:15
【问题描述】:
目前正在使用 Ecto + Postgres 从事 Phoenix 项目。创建评论时,作为评论belongs_to 用户和文章,有没有办法建立多个关联来生成一个变更集?
类似这样的伪代码
comment_changeset = build_assoc(article, :comment)
|> build_assoc(user, :comment)
有什么想法吗?
【问题讨论】:
标签:
postgresql
elixir
phoenix-framework
ecto
【解决方案1】:
正如贾斯汀所说,你可以使用 put_assoc 来做到这一点,所以我想这样的事情应该可以工作。
comment_changeset =
article
|> Ecto.build_assoc(:comment)
|> Ecto.Changeset.change()
|> Ecto.Changeset.put_assoc(:user, user)
【解决方案2】:
根据您的应用程序的设置方式,您可能希望使用cast_assoc/3 或put_assoc/4
文档中的相关部分是
换句话说,cast_assoc/3 在关联数据同时与父结构一起管理时很有用。如果关联的每一方都单独管理,最好使用put_assoc/3 并直接指示 Ecto 关联的外观。