Ce este Scaffolding în Ruby on Rails?

Probabil că în timp ce învățați Rails & ați citit că trebuie să creați un „scaffold” pentru a porni aplicația Rails…

Facil!

Puteți face acest lucru folosind comanda rails g scaffold.

Dar ce este o schelă?

„Schela este o structură temporară folosită pentru a susține o echipă de lucru pentru a ajuta la construcția, întreținerea și repararea clădirilor, podurilor și a tuturor celorlalte structuri create de om.” – Wikipedia

Traducerea în Rails:

O schelă este un set de fișiere generate automat care formează structura de bază a unui proiect Rails.

Aceste fișiere includ:

  • Un controler
  • Un model
  • Visualizări pentru fiecare acțiune standard a controlerului (index, edit, show, new)

Un nou traseu.

Și o migrare pentru a vă pregăti baza de date.

Să vedem un exemplu!

Cum se utilizează comanda Rails Scaffold

Un exemplu de scheletare a unui proiect pentru un site web despre cărți ar arăta astfel.

rails g scaffold books

Ar trebui să vedeți o mulțime de text care se derulează, care detaliază fișierele care sunt create.

Acest exemplu creează:

  • Un BooksController
  • Un model Book
  • Un nou resources :books traseu adăugat la fișierul config/routes.rb
  • Un set de fișiere legate de testare
  • Vezi fișierele sub app/views/books (cinci în total)

Da.

Sunt o mulțime de lucruri.

Dacă doriți să anulați acest eșafodaj, imediat după ce l-ați creat, puteți folosi următoarea comandă.

rails d scaffold books

Unde „d” înseamnă „distruge”.

Rețineți că acest lucru va ȘTERGE fișierele create de procesul de eșafodaj.

Acum:

Înainte de a vă putea folosi codul de eșafodaj trebuie să rulați migrațiile pentru a vă actualiza schema bazei de date.

Utilizați comanda rails db:migrate.

Dacă nu apare niciun mesaj de eroare, sunteți gata! Aveți o structură de bază pentru noua dvs. aplicație Rails, sau pentru o nouă funcționalitate care are nevoie de un nou model, vizualizări & controler corespunzător.

În continuare:

Executați rails server.

Deschideți browserul la localhost:3000/books & ar trebui să puteți vedea rezultatele!

Rails Scaffolding With Extra Fields

În mod implicit…

Modelul dvs. primește doar câmpuri timestamp, ceea ce înseamnă că singura informație pe care o puteți înregistra despre cărțile dvs. (sau orice alt model cu care lucrați) este ora la care au fost create sau actualizate.

Iată cum se face o schemă cu câmpuri suplimentare:

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

Dacă vă generați schela astfel, veți avea 3 câmpuri cu care să lucrați.

Un titlu, un autor și un an de publicare.

Este un pic mai interesant decât să ai doar marcajele temporale din baza de date.

Btw.

Este aceeași sintaxă pe care o folosim pentru crearea de migrații cu rails g migration.

Generarea de componente specifice

Scaffolding-ul creează lucruri de care s-ar putea să nu aveți nevoie sau pe care nu le doriți chiar acum.

Dar Rails este drăguț.

Puteți crea componente individuale, cum ar fi controlorii, folosind comanda rails g (g pentru generare).

Exemple:

  • rails g controller Fruit
  • rails g model Fruit name:string color:string (creează modelul + migrația)
  • rails g migration CreateBook title:string year:integer (creează doar migrația)

Unul dintre marile avantaje ale utilizării unei comenzi de eșafodaj este că toate fișierele sunt create folosind convențiile de denumire corecte, ceea ce evită mesajele de eroare ciudate. De asemenea, vă scutește de munca de a trebui să creați manual aceste fișiere.

Btw…

Se consideră o bună practică să ștergeți fișierele generate automat pe care nu intenționați să le folosiți. Deci, după ce ați folosit un generator precum „g controller”, revizuiți lista fișierelor create & eliminați-le pe cele de care nu aveți nevoie.

Summary

Ați învățat despre scaffolding în Ruby astfel încât să puteți începe rapid o nouă aplicație Rails cu care să exersați.

Pe măsură ce învățați mai mult, s-ar putea să doriți să renunțați la eșafodaj.

Dar puteți genera în continuare controlori individuali, modele sau fișiere de vizualizare atunci când aveți nevoie de ele.

Mulțumesc că ați citit! 🙂

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.