TL; DR Al jugar con Ecto, ¿dónde (en el código) debo cargar datos para rellenar previamente una tabla pequeña después de crearla?

Estoy aprendiendo Elixir, Phoenix y Ecto. Tengo una tabla en mi esquema para definir una lista de opciones configurables. Me gustaría rellenar previamente esta tabla con un conjunto mínimo de opciones cuando se crea la tabla.

Me parece que el script _create_table.exs es el lugar para hacerlo, ya que ahí es donde se crea la tabla. Estaba mirando un bloque de ejecución {}, pero parece extraño.

¿Hay un lugar mejor en el código para completar previamente una nueva tabla?

2
Paul Joiner 21 jul. 2020 a las 04:22

1 respuesta

La mejor respuesta

En Phoenix , la forma común de completar la base de datos es usar priv/repo/seeds.exs que genera con la tarea mix run como:

mix run priv/repo/seeds.exs

Pero este enfoque funciona bastante bien con cualquier proyecto Ecto . Simplemente cree el archivo, coloque el código de inicialización allí y actualice su sección mix.exs aliases como

defp aliases do
  [
    "ecto.setup": [
      "ecto.create",
      "ecto.migrate",
      "run priv/repo/seeds.exs"
    ],
    ...
  ]

Ahora mix ecto.setup crearía, migraría, y completaría la base de datos.

2
Aleksei Matiushkin 21 jul. 2020 a las 04:25