Wypełnianie bazy danych przykładowymi wpisami
[info] Jeśli pracujesz na laboratorium, aby rozpocząć realizację kolejnego modułu, musisz wykonać poniższe operacje
sklonuj repozytorium ze swoim kodem (
git clone ŚCIEŻKA_DO_REPOZYTORIUM),zainstaluj potrzebne gemy (
bundle install --path vendor/bundle),dokonaj migracji bazy danych (
rails db:migrate)uruchom serwer (
rails server)
Zanim zajmiemy się rozszerzeniem aplikacji serwerowej o możliwość udostępniania tokena, skupimy się jeszcze przez chwilę na innym zadaniu. W obrębie projektu, w pliku db/seeds.rb, możemy określić zestaw początkowych danych, które przy użyciu modelu załadujemy do bazy. Przykładowo, jeśli chcemy zainicjalizować naszą bazę dwoma studentami, możemy użyć poniższego kodu. Przekazuje on do metody create klasy modelu Student tablicę słowników z parametrami studenta. Wynik pracy zapisywany jest dodatkowo w zmiennej student.
students = Student.create(
[
{
index: '123456',
name: 'Zenon',
password: 'haslo123'
},
{
index: '654321',
name: 'Marian',
password: 'haslo123'
}
]
)Komendy rake, służące do obsługi bazy, można przekazywać do aplikacji łańcuchowo. Dotychczas korzystaliśmy głównie z komendy db:migrate. Tym razem, aby wyczyścić bazę i zapełnić ją przykładowymi danymi:
najpierw zrzucimy z niej wszystkie informacje (
db:drop),następnie upewnimy się, że baza istnieje (
db:create),dokonamy wszystkich migracji (
db:migrate),na koniec wypełnimy ją przygotowanymi w pliku
seeds.rbdanymi (db:seed).
rails db:drop db:create db:migrate db:seed
Możemy teraz odwiedzić aplikację i spróbować zalogować się na przykładowego studenta (123456:haslo123). Jak widać, studenci istnieją, ale reszta bazy jest pusta.
Postarajmy się teraz wypełnić przykładowymi danymi resztę modeli tak, aby w każdej tabeli pojawiły się przynajmniej dwie pozycje. Utworzymy więc dwa kursy.
Stworzymy też dwa tematy. Oba w pierwszym z utworzonych kursów (courses.first), ale każdy napisany przez innego studenta (students.first i students.last).
Podobnie utworzymy dwa posty. Oba w pierwszym temacie (topics.first), ale każdy napisany przez innego studenta.
Na koniec przypiszemy pierwszego studenta do wszystkich kursów.
Po powtórzeniu łańcucha komend zaludniającego bazę, uzyskamy kompletny zestaw przykładowych danych, do których zawsze będzie nam łatwo przywrócić system.
rails db:drop db:create db:migrate db:seed
[info] Aktualny kod
Na koniec każdego modułu znajduje się łącze do pełnej wersji kodu, który powinien być jego wynikiem.
Last updated