Vad är Scaffolding i Ruby on Rails?

Du kanske håller på att lära dig Rails & och läser att du måste skapa en ”scaffold” för att få igång din Rails-applikation…

Lätt!

Du kan göra detta med kommandot rails g scaffold.

Men vad är en byggnadsställning?

”Byggnadsställning är en tillfällig konstruktion som används för att stödja en arbetsgrupp för att hjälpa till vid konstruktion, underhåll och reparation av byggnader, broar och alla andra konstgjorda konstruktioner.” – Wikipedia

Översatt till Rails:

En byggnadsställning är en uppsättning automatiskt genererade filer som utgör grundstrukturen för ett Rails-projekt.

Dessa filer inkluderar:

  • En kontrollant
  • En modell
  • Vyer för varje standardkontrollantåtgärd (index, redigera, visa, ny)

En ny väg.

Och en migrering för att förbereda din databas.

Vi ska se ett exempel!

Hur man använder Rails Scaffold-kommandot

Ett exempel på att bygga upp ett projekt för en webbplats om böcker skulle se ut så här.

rails g scaffold books

Du bör se en hel del text rullas förbi, med information om de filer som skapas.

Detta exempel skapar:

  • En BooksController
  • En Book modell
  • En ny resources :books rutt som läggs till i din config/routes.rb fil
  • En uppsättning testrelaterade filer
  • Visa filer under app/views/books (totalt fem stycken)

Ja.

Det är en hel del saker.

Om du vill ångra den här ställningen, direkt efter att du skapat den, kan du använda följande kommando.

rails d scaffold books

Där ”d” betyder ”destroy” (förstöra).

Tänk på att detta kommer att LÖSA de filer som skapats av scaffoldingprocessen.

Nu:

För att du ska kunna använda din scaffoldade kod måste du köra dina migreringar för att uppdatera ditt databasschema.

Använd kommandot rails db:migrate.

Om inga felmeddelanden dyker upp är du klar! Du har en grundläggande struktur för din nya Rails-applikation, eller för en ny funktion som behöver en ny modell, vyer & motsvarande controller.

Nästa:

Kör rails server.

Öppna webbläsaren till localhost:3000/books & du bör kunna se resultatet!

Rails Scaffolding med extra fält

Som standard…

Din modell får bara tidsstämpelfält, vilket innebär att den enda information som du kan registrera om dina böcker (eller vilken modell du än arbetar med) är den tidpunkt då de skapades eller uppdaterades.

Så här gör du med extra fält:

rails g scaffold books title:string author:string publication_year:integer

Om du genererar din scaffolding så här har du tre fält att arbeta med:

En titel, en författare och ett publiceringsår.

Det är lite mer intressant än att bara ha databasens tidsstämplar.

Btw.

Detta är samma syntax som vi använder för att skapa migreringar med rails g migration.

Generera specifika komponenter

Scaffolding skapar saker som du kanske inte behöver eller vill ha just nu.

Men Rails är trevligt.

Du kan skapa enskilda komponenter, till exempel controllers, med hjälp av kommandot rails g (g för generate).

Exempel:

  • rails g controller Fruit
  • rails g model Fruit name:string color:string (skapar modell + migrering)
  • rails g migration CreateBook title:string year:integer (skapar endast migrering)

En av de stora fördelarna med att använda ett scaffolding-kommando är att alla filer skapas med korrekta namnkonventioner, vilket undviker konstiga felmeddelanden. Du slipper också arbetet med att manuellt skapa dessa filer.

Btw…

Det anses vara god praxis att ta bort automatiskt genererade filer som du inte planerar att använda. Så efter att ha använt en generator som ”g controller”, granska listan över skapade filer & ta bort de filer som du inte behöver.

Sammanfattning

Du har lärt dig om scaffolding i Ruby så att du snabbt kan starta en ny Rails-applikation att öva med.

När du lär dig mer kanske du vill släppa scaffolding.

Men du kan fortfarande generera enskilda kontrollanter, modeller eller visningsfiler när du behöver dem.

Tack för att du läste! 🙂

Lämna ett svar

Din e-postadress kommer inte publiceras.