Ecto构建多个assoc

Alb*_*mec 4 postgresql elixir ecto phoenix-framework

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

像这样的伪代码

comment_changeset = build_assoc(article, :comment) 
                 |> build_assoc(user, :comment)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Jus*_*ood 5

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

文档中的相关部分是

换句话说,cast_assoc/3当关联数据与父结构一起同时管理时非常有用。如果关联的每一方都是单独管理的,那么最好使用put_assoc/3并直接指示 Ecto 关联应该是什么样子。


NoD*_*ame 5

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

comment_changeset =
  article
  |> Ecto.build_assoc(:comment)
  |> Ecto.Changeset.change()
  |> Ecto.Changeset.put_assoc(:user, user)
Run Code Online (Sandbox Code Playgroud)