Ecto构建多个assoc

时间:2017-03-13 01:22:15

标签: postgresql elixir phoenix-framework ecto

目前正在使用Ecto + Postgres处理Phoenix项目。在创建评论时,作为评论belongs_to用户和文章,有没有办法建立多个关联来生成一个变更集?

像这样的伪代码

comment_changeset = build_assoc(article, :comment) 
                 |> build_assoc(user, :comment)

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

正如贾斯汀所说,你可以使用put_assoc来做到这一点,所以我认为这样的事情应该有效。

comment_changeset =
  article
  |> Ecto.build_assoc(:comment)
  |> Ecto.Changeset.change()
  |> Ecto.Changeset.put_assoc(:user, user)

答案 1 :(得分:2)

根据应用的设置方式,您需要使用cast_assoc/3put_assoc/4

文档中的相关部分是

  

换句话说,当关联数据与父结构一起管理时,cast_assoc/3非常有用。如果关联的每一侧都是单独管理的,最好使用put_assoc/3并直接指示Ecto关联的外观。