创建包含多条记录的新列时的正确语法是什么
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
我在使用 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