@kolosekNesha
CEO @ Kolosek.com
Scaffolding i Ruby on Rails henviser til den automatiske generering af et sæt af en model, visninger og en controller, der normalt bruges til en enkelt databasetabel.
For eksempel kan du automatisk generere en brugerklar controller, model og visninger med en fuld CRUD (Create, Read, Update, Delete) webinterface til Story-tabellen ved hjælp af følgende kommando:
$rails generate scaffold Story title:string content:text
Det er meget nemmere at gøre dette, i stedet for at kode alt selv, det sparer dig en masse tid!
Scaffold eller modeller?
I forhold til scaffold, der genererer alt det, du har brug for (og ikke har brug for), skaber modeller kun nogle relaterede komponenter. Den bedste, og min foretrukne måde at forklare forskellen mellem scaffold og modeller på er ved hjælp af følgende eksempel:
Generer modeller
Når du indtaster kommandoen
$rails generate model Story title:string content:text
genererer du:
invoke active_record binder din model til databasen, mens den næste linje opretter en migreringsfil. Migrationsfiler bruges til at ændre dit databaseskema. Denne migrationsfil opretter databasetabellen kaldet “stories” og databasekolonner for “title” og “content”.
Den tredje linje opretter en model – en Ruby-klasse, der arver Active Record. Dermed kan alle metoder, der kan kaldes i Active Record, nu kaldes i din model. De sidste tre linjer opretter relaterede testfiler for din model.
Selv om scaffolding får dig hurtigt i gang, er det usandsynligt, at den kode, den genererer, passer perfekt til din applikation. Du vil højst sandsynligt ønske at tilpasse den genererede kode. Mange erfarne Rails-udviklere undgår scaffolding helt og aldeles og foretrækker at skrive al eller det meste af deres kildekode fra bunden. Du kan læse mere om dette på RailsGuides.
Som du kan se, opretter generate models ikke nogen form for visning til at vise oplysninger på en side. Hvis du vil have en komplet, brugerklar applikation, skal du:
- generate controllers (som også genererer visninger) eller
- generate scaffold (som genererer din model, visninger, controller og skriver til din routes.rb-fil).
Hvis du ombestemmer dig og beslutter dig for at bruge scaffold efter allerede at have genereret modellen, kan du altid køre
$rails generate scaffold <name>
Det vil oprette alle de manglende filer.
Generer scaffold
Hvis du indtaster kommandoen
$rails generate scaffold Story title:string content:text
vil du generere følgende filer:
Når modelrelaterede tests er oprettet, vil den næste linje generere ressourceveje til dine historier. Efter generering af ressourceruter kommer controlleren og dens handlinger (index, show, new, edit, create, update og destroy) sammen med visninger og controller-tests for hver af disse handlinger.
Rails-routeren genkender URL’er og forbinder dem med en controllers handling. Som standard vil en controllers handling gengive en visning af samme navn.
Migration
Hver gang du opretter en migration ved hjælp af scripts (generate model/generate scaffold), tilføjes en ny migration til den korrekte mappe. Du bruger
$rake db:migrate
til at kontrollere hvilke migreringer, der ikke er blevet tilføjet til databasen.
Destroy
Det står enhver frit for at redigere og foretage de nødvendige ændringer i deres program, så det fungerer efter hensigten, også selv om det betyder, at stilladset skal fjernes helt. Du kan fjerne scaffold på følgende måde:
- Generer scaffold:
$rails generate scaffold Story
- Hvis du har migreret dine filer, skal du udføre en rollback:
$rake db:rollback
- Destruer eller fortryder stilladset:
$rails destroy scaffold Story
Derved sletter du alle de filer, der er oprettet af stilladset, men yderligere ændringer, som du muligvis har foretaget manuelt, vil ikke blive fjernet.
Slutning
Et stillads er fremragende at bruge, når det drejer sig om enkle eksempler, hurtige mockups eller test. Du skal dog sørge for at generere dine egne modeller, når du beslutter dig for at udvikle en ny applikation. Glem ikke at du altid skal teste din applikation, find ud af hvordan du gør det ved at bruge Capybara!
Vi håber du har opdaget noget nyt i dag!
Tidligere offentliggjort på https://kolosek.com/rails-scaffold/
Tags
Opret din gratis konto for at låse op for din brugerdefinerede læseoplevelse.