目前正在使用Ecto + Postgres处理Phoenix项目。在创建评论时,作为评论belongs_to
用户和文章,有没有办法建立多个关联来生成一个变更集?
像这样的伪代码
comment_changeset = build_assoc(article, :comment)
|> build_assoc(user, :comment)
有什么想法吗?
答案 0 :(得分:5)
正如贾斯汀所说,你可以使用put_assoc
来做到这一点,所以我认为这样的事情应该有效。
comment_changeset =
article
|> Ecto.build_assoc(:comment)
|> Ecto.Changeset.change()
|> Ecto.Changeset.put_assoc(:user, user)
答案 1 :(得分:2)
根据应用的设置方式,您需要使用cast_assoc/3
或put_assoc/4
文档中的相关部分是
换句话说,当关联数据与父结构一起管理时,
cast_assoc/3
非常有用。如果关联的每一侧都是单独管理的,最好使用put_assoc/3
并直接指示Ecto关联的外观。