如何在 Phoenix Framework 中更新 phoenix.gen.html 创建的文件?

How do I update files created by phoenix.gen.html in the Phoenix Framework?

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

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

      timestamps
  end

连同 models/user.ex,数据库 table 已与视图、控制器和模板一起创建。

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

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

    timestamps
  end

是否有混合任务或类似任务一次性更新相关数据库table、视图、控制器和模板?

如果没有,change/update 这些文件的推荐流程是什么?

您将需要像您所做的那样对您的方案进行更新。但是,您还需要生成一个迁移,以便您的数据库 table 反映这一点:

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 函数以反映新字段。