2015-09-16 11 views
10

mam ten schemat:Jak wstępnie wypełnić bazę danych w uruchomieniu aplikacji Phoenix?

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

chciałbym, które po zastosowaniu rozruchu kilka wierszy zostało automatycznie utworzone i zaludnione, że chcę stworzyć 6 wpisy z polem :title zawierającego: Strona1, PAGE2 ,. .. Czy powinienem to zrobić?

+0

Chcesz wstawić te znaki przy każdym uruchomieniu aplikacji? To trochę pachnie. –

+0

Tak. Zaraz po uruchomieniu aplikacji. W produkcji nie powinno to stanowić problemu. Moim celem jest posiadanie tego do edycji HTML przez użytkowników. Byłoby dobrze mieć kilka predefiniowanych pól, które są edytowalne przez użytkowników używających HTML 'content editable', ale zostały zakodowane jako HTML. Czy jest w tym coś dziwnego? –

+0

Nie możesz po prostu ustawić wartości początkowej w formularzu, kiedy zostanie utworzone "edytowalne"? –

Odpowiedz

15

Moja sugestia: utwórz plik skryptu, który zapełni bazę danych. Nazwijmy go priv/repo/seeds.exs:

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

W rozwoju można uruchomić go jako

mix run priv/repo/seeds.exs 

lub gdy trzeba w produkcji:

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

Nie widzę żadnego powodu, aby rób to za każdym razem, gdy aplikacja się uruchamia. Wyobraź sobie, że każde polecenie uruchamiane w fazie rozwoju, testowania lub produkcji teraz musi zapłacić karę za tworzenie danych w bazie danych. To nie jest dobry pomysł.

+0

Dobrze, więc twoja sugestia polega na stworzeniu skryptu, który będę mógł uruchomić za pomocą polecenia "Mix", gdy tylko zapełnię bazę danych zamiast umieszczania kodu w projekcie w pliku lib (lub innym .ex), na przykład. Zrobiłem to wright? –

+0

OK, myślę, że go mam. Byłem stronniczy, ponieważ pochodząc z Meteora, robiłem to w funkcji 'Meteor.startup', która uruchamia kod po uruchomieniu klienta lub serwera ... Dziękuję za znalezienie czasu na odpowiedź. –

+2

Wielka UAU dla ciebie, Chris i reszta zespołu. Jestem zaskoczony, ponieważ rozwiązanie było już na miejscu w plikach projektu (nigdy wcześniej się nim nie zajrzałem ...) i dokumentacja jest znakomita, łącząc się z definicjami, które pozwalają początkującym zrozumieć wszystko! Głębokie uznanie. –