TL; Dr Podczas odtwarzania z ECTO, gdzie (w kodzie) należy załadować dane, aby wstępnie wypełnić małą stół po jej utworzeniu?

Uczam się Elixir, Phoenix i ECTO. Mam stół w moim schemacie, aby zdefiniować listę konfigurowalnych opcji. Chciałbym wypełnić tę tabelę z minimalnym zestawem opcji, gdy tabela zostanie utworzona.

Wydaje mi się, że skrypt _Create_table.exs jest miejscem, aby to zrobić, ponieważ właśnie tam tworzony jest tabela. Patrzyłem na blok execute {}, ale wydaje się Klunki.

Czy w kodzie jest lepsze miejsce, aby wykonać wstępnie wypełnienie nowej tabeli?

2
Paul Joiner 21 lipiec 2020, 04:22

1 odpowiedź

Najlepsza odpowiedź

W Phoenix , powszechnym sposobem wypełnienia DB jest użycie priv/repo/seeds.exs Generuje z zadaniem mix run jako:

mix run priv/repo/seeds.exs

Ale to podejście działa ładnie z dowolnym projektem ECTO . Wystarczy utwórz plik, umieść tam kod wysiewowy i zaktualizuj swój mix.exs aliases

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

Teraz mix ecto.setup stworzyłoby, migrują, i wypełnij bazę danych.

2
Aleksei Matiushkin 21 lipiec 2020, 04:25