elixir - 如何更新 Phoenix 框架中 phoenix.gen.html 创建的文件?

标签 elixir phoenix-framework ecto

我使用 phoenix.gen.html 创建了一个简单的用户模型,其架构在 models/user.ex 中生成,如下所示。

    schema "users" do
      field :name, :string
      field :email, :string
      field :bio, :string
      field :dislikes_turnips, :boolean

      timestamps
  end

models/user.ex一起创建了数据库表以及 View 、 Controller 和模板。

我想通过更改一个字段并添加另一个字段来创建如下所示的内容来更新我的用户模型。

schema "users" do
    field :name, :string
    field :email, :string
    field :bio, :string
    field :likes_turnips, :boolean
    field :turnips, :integer

    timestamps
  end

是否有混合任务或类似任务可以一次性更新相关数据库表、 View 、 Controller 和模板?

如果没有,更改/更新这些文件的推荐流程是什么?

最佳答案

您需要像之前一样更新您的方案。但是,您还需要生成迁移,以便您的数据库表反射(reflect)这一点:

mix ecto.gen.migration change_turnips_on_users

您应该在 priv/repo/migrations 中有一个需要修改的新文件(您可以阅读有关迁移的更多信息 in the docs :

defmodule MyApp.Repo.Migrations.ChangeTurnipsOnUsers do
  use Ecto.Migration

  def change do
    alter table(:users) do
      add :turnips, :integer
    end

    rename table(:users), :dislikes_turnips, to: :likes_turnips
  end
end

您还需要更新以下内容:

  • form.html.eex 适合您的用户
  • 为您的用户模型生成的 changeset/2 函数,以反射(reflect)新字段。

关于elixir - 如何更新 Phoenix 框架中 phoenix.gen.html 创建的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33393808/

相关文章:

postgresql - 使用具有 has_many 关系的结构为数据库播种时找不到列

elixir - 使用 Ecto 正确设置检查约束

elixir - 如何正确编写交易并消除错误

elixir - 如何在 elixir 中编译单个文件?

elixir - 如何将 erlang 包添加到 elixir 应用程序中

混合键 Elixir map

elixir - 如何编写在日期时间字段上执行 group_by MONTH 的 Ecto 查询

elixir - key :user_id not found in. Elixir 预加载问题

elixir - 关于 Gettext 模块上的 pattern_match_cov 的透析器警告

date - 如何将天数添加到 Ecto.DateTime?