如何在 Phoenix 应用程序启动时预填充数据库?

How to pre-populate database on a Phoenix application start-up?

我有这个架构:

schema "editables" do
    field :title, :string 
    field :content, :binary
   timestamps
end

我希望在应用程序启动时自动创建和填充几行,假设我想创建 6 个条目,其中 :title 字段包含:page1、page2、... 我应该做吗?

我的建议:创建一个脚本文件来填充数据库。我们称它为 priv/repo/seeds.exs:

alias MyApp.Repo
Repo.insert! %MyApp.Data{...}
Repo.insert! %MyApp.Data{...}

在开发中你可以运行它作为

mix run priv/repo/seeds.exs

或者当您在生产中需要时:

MIX_ENV=prod mix run priv/repo/seeds.exs

我看不出有什么理由让您每次启动应用程序时都这样做。想象一下您 运行 在开发、测试或生产中的每个命令现在都需要付出在数据库中创建数据的代价。这不是个好主意。