20 marca 2020 542 czytania

.

Scaffolding w Ruby on Rails odnosi się do automatycznego generowania zestawu modelu, widoków i kontrolera zazwyczaj używanego dla pojedynczej tabeli bazy danych.

Na przykład, możesz automatycznie wygenerować gotowy do użycia kontroler, model i widoki z pełnym interfejsem CRUD (Create, Read, Update, Delete) dla tabeli Story używając następującej komendy:

$rails generate scaffold Story title:string content:text

Jest to o wiele łatwiejsze do zrobienia, zamiast kodować wszystko samemu, oszczędza to mnóstwo czasu!

Rusztowanie czy modele?

W porównaniu do rusztowania, które generuje wszystko, czego potrzebujesz (i czego nie potrzebujesz), modele tworzą tylko niektóre powiązane komponenty. Najlepszym i moim ulubionym sposobem na wyjaśnienie różnicy między rusztowaniem a modelami jest użycie następującego przykładu:

Generate models

Po wpisaniu polecenia

$rails generate model Story title:string content:text

wygenerujesz:

invoke active_record powiąże twój model z bazą danych, podczas gdy następna linia tworzy plik migracji. Migracje są używane do zmiany schematu Twojej bazy danych. Ten plik migracyjny tworzy tabelę bazy danych o nazwie 'stories’, oraz kolumny bazy danych dla „title” i „content”.

Trzecia linia stworzy model – klasę Ruby, która dziedziczy po Rekordzie Aktywnym. Dzięki temu, każda metoda, która może być wywołana w Rekordzie Aktywnym może być teraz wywołana w twoim modelu. Ostatnie trzy linie tworzą powiązane pliki testowe dla Twojego modelu.

Pomimo, że rusztowanie pozwoli Ci szybko zacząć i działać, kod, który generuje jest mało prawdopodobne, że będzie idealnie pasował do Twojej aplikacji. Najprawdopodobniej będziesz chciał dostosować wygenerowany kod. Wielu doświadczonych programistów Rails całkowicie unika rusztowań, preferując pisanie całego lub większości swojego kodu źródłowego od zera. Możesz przeczytać więcej na ten temat na RailsGuides.

Jak widzisz, generate models nie tworzy żadnego rodzaju widoku do wyświetlania informacji na stronie. Aby mieć kompletną, gotową do użycia aplikację, musiałbyś:

  • wygenerować kontrolery (które z kolei generują również widoki) lub
  • wygenerować rusztowanie (które generuje twój model, widoki, kontroler i zapisuje do twojego pliku routes.rb).

Jeśli zmienisz zdanie i zdecydujesz się na użycie scaffold po wygenerowaniu modelu, zawsze możesz uruchomić

$rails generate scaffold <name>

To stworzy wszystkie brakujące pliki.

Generate scaffold

Jeśli wpiszesz komendę

$rails generate scaffold Story title:string content:text

wygenerujesz następujące pliki:

Po utworzeniu testów związanych z modelem, następna linia wygeneruje trasy zasobów do twoich historii. Po wygenerowaniu tras zasobów przychodzi czas na kontroler i jego akcje (index, show, new, edit, create, update i destroy), wraz z widokami i testami kontrolera dla każdej z tych akcji.

Router Rails rozpoznaje adresy URL i łączy je z akcją kontrolera. Domyślnie, akcja kontrolera będzie renderować widok o tej samej nazwie.

Migracja

Za każdym razem, gdy tworzysz migrację za pomocą skryptów (generate model/generate scaffold), nowa migracja jest dodawana do odpowiedniego katalogu. Używasz

$rake db:migrate

do sprawdzenia, które migracje nie zostały dodane do bazy danych.

Destroy

Każdy może edytować i dokonywać niezbędnych zmian w swojej aplikacji, aby działała zgodnie z przeznaczeniem, nawet jeśli oznacza to całkowite usunięcie rusztowania. Możesz usunąć rusztowanie w następujący sposób:

  1. Generuj rusztowanie:
    $rails generate scaffold Story
  2. Jeśli migrowałeś pliki, wykonaj rollback:
    $rake db:rollback
  3. Zniszcz lub cofnij rusztowanie:
    $rails destroy scaffold Story

Wykonując tę czynność, usuniesz wszystkie pliki utworzone przez rusztowanie, ale dodatkowe zmiany, które mogłeś wykonać ręcznie, nie zostaną usunięte.

Wnioski

Rusztowanie jest doskonałe do wykorzystania, jeśli chodzi o proste przykłady, szybkie makiety lub testowanie. Pamiętaj jednak, aby generować własne modele, gdy zdecydujesz się na rozwój nowej aplikacji. Nie zapomnij, aby zawsze testować swoją aplikację, dowiedz się, jak to zrobić za pomocą Capybara!

Mamy nadzieję, że odkryłeś dziś coś nowego!

Poprzednio opublikowane na stronie https://kolosek.com/rails-scaffold/

.

Tagi

Dołącz do Hacker Noon

Załóż bezpłatne konto, aby odblokować własne doświadczenie czytelnicze.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.