创建包含多条记录的新列时的正确语法是什么

What is the correct syntax when creating new column containing multiple records

我在使用 Elixir/Phoenix 文档时遇到了问题,所以我想在这里问一下。

我创建了一个名为 boards 的 table,其中包含一些文本字段(:title、:owner 等)。我现在想创建一个将向其添加新字段的迁移,该字段将包含新 members table.

的多条记录

迁移文件的正确语法是什么?如何编辑 boards.ex?是否需要将新文件放在特定位置,即 members 定义是否需要在 boards.ex 中?

这是让它工作的代码:

# \lib\vision\boards\board.ex
defmodule Vision.Boards.Board do
  use Ecto.Schema
  import Ecto.Changeset

  schema "boards" do
    field :owner, :string
    field :team_name, :string
    field :title, :string
    has_many :members, Vision.Members.Member

    timestamps()
  end

  @doc false
  def changeset(board, attrs) do
    board
    |> cast(attrs, [:title, :owner, :team_name])
    |> validate_required([:title, :owner, :team_name])
  end
end

# \lib\vision\members\member.ex
defmodule Vision.Members.Member do
  use Ecto.Schema
  import Ecto.Changeset

  schema "members" do
    field :role, :string
    field :username, :string
    belongs_to :board, Vision.Boards.Board    

    timestamps()
  end

  @doc false
  def changeset(member, attrs) do
    member
    |> cast(attrs, [:username, :role])
    |> validate_required([:username, :role])
  end
end

然后在迁移中:

# \priv\repo\migrations\*_member_belongs_to_board.exs
defmodule Vision.Repo.Migrations.MemberBelongsToBoard do
  use Ecto.Migration

  def change do
    alter table(:members) do
        add :board_id, references (:boards)
    end
  end
end