20th March 2020 542 reads

Scaffolding in Ruby on Rails verwijst naar de automatische generatie van een set van een model, views en een controller meestal gebruikt voor een enkele database tabel.

U kunt bijvoorbeeld een kant-en-klare controller, model en views met een volledige CRUD (Create, Read, Update, Delete) webinterface voor de Story-tabel automatisch genereren met het volgende commando:

$rails generate scaffold Story title:string content:text

Het is veel gemakkelijker om dit te doen, in plaats van alles zelf te coderen, het bespaart je een hoop tijd!

Steiger of Modellen?

Vergeleken met de steiger die alles genereert wat je nodig hebt (en niet nodig hebt), modellen creëren slechts enkele gerelateerde componenten. De beste, en mijn favoriete, manier om het verschil tussen scaffold en models uit te leggen is aan de hand van het volgende voorbeeld:

Generate models

Als u het commando

$rails generate model Story title:string content:text

invoert, genereert u:

invoke active_record bindt uw model aan de database, terwijl de volgende regel een migratiebestand aanmaakt. Migraties worden gebruikt om uw database schema te wijzigen. Dit migratie bestand creëert de database tabel genaamd ‘stories’, en database kolommen voor “title” en “content”.

De derde regel zal een model creëren – een Ruby klasse die het Active Record erft. Hiermee kan elke methode die in Active Record kan worden aangeroepen, nu in je model worden aangeroepen. De laatste drie regels maken gerelateerde test bestanden voor uw model.

Hoewel scaffolding u snel op weg helpt, is het onwaarschijnlijk dat de code die het genereert perfect past bij uw applicatie. Je zult waarschijnlijk de gegenereerde code willen aanpassen. Veel ervaren Rails ontwikkelaars vermijden scaffolding volledig en geven de voorkeur aan het schrijven van alle of de meeste van hun broncode vanaf nul. Je kunt hier meer over lezen in RailsGuides.

Zoals je kunt zien, maakt generate models geen enkele view om informatie op een pagina weer te geven. Om een complete, gebruiksklare applicatie te hebben, zou je moeten:

  • controllers genereren (die op zijn beurt ook views genereert) of
  • scaffold genereren (die je model, views en controller genereert en naar je routes.rb bestand schrijft).

Als u van gedachten verandert en besluit om scaffold te gebruiken nadat u het model al hebt gegenereerd, kunt u altijd

$rails generate scaffold <name>

uitvoeren. Het zal alle ontbrekende bestanden aanmaken.

Generate scaffold

Als u het commando

$rails generate scaffold Story title:string content:text

invoert, genereert u de volgende bestanden:

Als de model-gerelateerde tests zijn gemaakt, genereert de volgende regel resource routes naar uw stories. Na het genereren van resource routes komt de controller en zijn acties (index, show, new, edit, create, update en destroy), samen met views en controller tests voor elk van deze acties.

De Rails router herkent URL’s en verbindt ze met de actie van een controller. Standaard zal een controller’s actie een view met dezelfde naam renderen.

Migratie

elke keer dat je een migratie maakt met behulp van scripts (genereer model/genereer steiger) wordt een nieuwe migratie toegevoegd aan de juiste directory. U gebruikt

$rake db:migrate

om te controleren welke migraties nog niet aan de database zijn toegevoegd.

Vernietig

Het staat iedereen vrij om zijn applicatie aan te passen en de nodige wijzigingen aan te brengen om te werken zoals bedoeld, zelfs als dat betekent dat de steiger volledig moet worden verwijderd. U kunt het schavot op de volgende manier verwijderen:

  1. Genereren schavot:
    $rails generate scaffold Story
  2. Als u uw bestanden gemigreerd heeft, voer dan een rollback uit:
    $rake db:rollback
  3. Vernietig of maak het schavot ongedaan:
    $rails destroy scaffold Story

Door dit te doen, verwijdert u alle bestanden die door de steiger zijn gemaakt, maar aanvullende wijzigingen die u mogelijk handmatig hebt aangebracht, worden niet verwijderd.

Conclusie

Een steiger is uitstekend te gebruiken als het gaat om eenvoudige voorbeelden, snelle mockups of testen. Zorg er echter voor dat u uw eigen modellen genereert wanneer u besluit een nieuwe toepassing te ontwikkelen. Vergeet niet om altijd je applicatie te testen, ontdek hoe je dat doet door Capybara te gebruiken!

We hopen dat je vandaag iets nieuws hebt ontdekt!

Vorig gepubliceerd op https://kolosek.com/rails-scaffold/

Tags

Word lid van Hacker Noon

Maak uw gratis account aan om uw leeservaring op maat te ontgrendelen.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.