EctoおよびEcto.Changesetには、~assocという命名の関数が複数存在します。 Ecto.build_assoc/3 Ecto.Changeset.cast_assoc/3 Ecto.Changeset.put_assoc/4 assocという単語が入っているように、それぞれレコードのリレーションに関する処理を行う関数なのですが、ちょいと違いが分かりにくかったのでまとめておきます。 Ecto.build_assoc/3 build_assocはリレーション元の構造体を入力として、リレーション先の構造体を生成する関数です。まさにbuildですね。 次のように、has_manyの構造体を作りたいときに利用します。 # リレーション元の親テーブルの構造体を取得 iex> post = Repo.get(Post, 13) %Post{id: 13} # リレーション先の子テーブル