如何与ecto 2建立多对多关系?作为一个示例应用程序,我想创建一个可以在多个类别中的帖子.这些类别已经存在.例如:
[%Category{id: "1", name: "elixir"}, %Category{id: "2", name: "erlang"}]
我正在使用Ecto 2 beta 0.示例项目名为Ecto2.
我定义了两个模型:
defmodule Ecto2.Post do
  use Ecto2.Web, :model
  use Ecto.Schema
  schema "posts" do
    field :title, :string
    many_to_many :categories, Ecto2.Category, join_through: "posts_categories", on_replace: :delete
    timestamps
  end
  @required_fields ~w(title)
  @optional_fields ~w()
  def changeset(model, params \\ :empty) do
    model
    |> cast(params, @required_fields, @optional_fields)
    |> cast_assoc(:categories)  # not suitable?
  end
end
defmodule Ecto2.Category do
  use Ecto2.Web, :model
  schema "categories" do
    field :name, :string
    timestamps
  end
  @required_fields ~w(name)
  @optional_fields ~w()
  def changeset(model, …