如何在现有表凤凰中添加字段

Pri*_*riz 3 elixir ecto phoenix-framework

所以我是凤凰城的新手。我api在我的phoenix项目中创建了一个简单的问题是我想在我的凤凰城中添加另一个字段todo.ex

我想在我的todo.ex中添加一个作者字段

defmodule TodoApi.Todo do
  use TodoApi.Web, :model

  schema "todos" do
    field :description, :string

    timestamps()
  end

  def changeset(struct, params \\ %{}) do
    struct
    |> cast(params, [:description])
    |> validate_required([:description])
  end
end
Run Code Online (Sandbox Code Playgroud)

defmodule TodoApi.Todo do
  use TodoApi.Web, :model

  schema "todos" do
    field :description, :string
    field :author, :string

    timestamps()
  end

  def changeset(struct, params \\ %{}) do
    struct
    |> cast(params, [:description, :author])
    |> validate_required([:description, :author])
  end
end
Run Code Online (Sandbox Code Playgroud)

但是我收到了postgrex错误42703列t0.author不存在

提前致谢..

pra*_*sun 6

您需要为todos表添加迁移。

如果使用ecto,只需使用进行迁移,mix ecto.gen.migration todos_add_author_column并在新生成的priv/repo/migrations/<timestamp>_todos_add_author_column.exs文件中添加一列,如下所示:

def change do
  alter table("todos") do
    add :author, :text
  end
end
Run Code Online (Sandbox Code Playgroud)

这是文档的链接

  • 您可以执行混合任务`mix ecto.gen.migration todos_add_author_column`。它将为您生成迁移文件。你只需要填充它的 `change` 函数 (2认同)