关于使用 Ecto 预填充 PostgreSQL Table 的建议
Advice on Pre-Populating PostgreSQL Table with Ecto
TL;DR 使用 Ecto 时,我应该在哪里(在代码中)加载数据以在创建后预填充一个小 table?
我正在学习 Elixir、Phoenix 和 Ecto。我的架构中有一个 table 来定义可配置选项列表。我想在创建 table 时使用最少的一组选项预填充此 table。
在我看来 _create_table.exs 脚本是执行此操作的地方,因为那是创建 table 的地方。我正在查看一个 execute{} 块,但它看起来很笨拙。
代码中是否有更好的地方来完成预填充新 table?
在 Phoenix 中,填充数据库的常用方法是使用 priv/repo/seeds.exs
它通过 mix run
任务生成:
mix run priv/repo/seeds.exs
但这种方法实际上适用于任何 Ecto 项目。只需创建文件,将种子代码放在那里,然后将 mix.exs
aliases
部分更新为
defp aliases do
[
"ecto.setup": [
"ecto.create",
"ecto.migrate",
"run priv/repo/seeds.exs"
],
...
]
现在mix ecto.setup
将创建、迁移、和填写数据库。
TL;DR 使用 Ecto 时,我应该在哪里(在代码中)加载数据以在创建后预填充一个小 table?
我正在学习 Elixir、Phoenix 和 Ecto。我的架构中有一个 table 来定义可配置选项列表。我想在创建 table 时使用最少的一组选项预填充此 table。
在我看来 _create_table.exs 脚本是执行此操作的地方,因为那是创建 table 的地方。我正在查看一个 execute{} 块,但它看起来很笨拙。
代码中是否有更好的地方来完成预填充新 table?
在 Phoenix 中,填充数据库的常用方法是使用 priv/repo/seeds.exs
它通过 mix run
任务生成:
mix run priv/repo/seeds.exs
但这种方法实际上适用于任何 Ecto 项目。只需创建文件,将种子代码放在那里,然后将 mix.exs
aliases
部分更新为
defp aliases do
[
"ecto.setup": [
"ecto.create",
"ecto.migrate",
"run priv/repo/seeds.exs"
],
...
]
现在mix ecto.setup
将创建、迁移、和填写数据库。