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

时间:2015-09-16 10:50:17

标签: elixir phoenix-framework ecto

我有这个架构:

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

我希望在应用程序启动时自动创建并填充几行,比如说我要创建6个条目,:title字段包含:page1,page2,... 我应该这样做吗?

1 个答案:

答案 0 :(得分:19)

我的建议:创建一个将填充数据库的脚本文件。我们称之为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

每次应用启动时,我都无法看到您这样做的原因。想象一下,您在开发,测试或生产中运行的每个命令现在都需要支付在数据库中创建数据的代价。这不是一个好主意。