20 marzo 2020 542 letture

Scaffolding in Ruby on Rails si riferisce alla generazione automatica di un insieme di un modello, viste e un controller di solito usato per una singola tabella di database.

Per esempio, puoi generare automaticamente un controller pronto all’uso, un modello e delle viste con un’interfaccia web CRUD (Create, Read, Update, Delete) completa per la tabella Story usando il seguente comando:

$rails generate scaffold Story title:string content:text

È molto più facile fare questo, invece di codificare tutto da soli, ti fa risparmiare un sacco di tempo!

Scaffold o modelli?

Paragonato allo scaffold che genera tutto ciò di cui hai bisogno (e non hai bisogno), i modelli creano solo alcuni componenti correlati. Il modo migliore, e il mio preferito, per spiegare la differenza tra scaffold e modelli è usando il seguente esempio:

Genera modelli

Una volta inserito il comando

$rails generate model Story title:string content:text

genererai:

invoke active_record legherà il tuo modello al database, mentre la linea successiva crea un file di migrazione. Le migrazioni sono usate per alterare lo schema del database. Questo file di migrazione crea la tabella del database chiamata ‘stories’, e le colonne del database per “title” e “content”.

La terza linea creerà un modello – una classe Ruby che eredita l’Active Record. Con questo, ogni metodo che può essere chiamato in Active Record può ora essere chiamato nel vostro modello. Le ultime tre linee creano i relativi file di test per il tuo modello.

Mentre lo scaffolding ti farà partire velocemente, è improbabile che il codice che genera sia perfettamente adatto alla tua applicazione. Probabilmente vorrete personalizzare il codice generato. Molti sviluppatori Rails esperti evitano completamente lo scaffolding, preferendo scrivere tutto o la maggior parte del loro codice sorgente da zero. Potete leggere di più su questo su RailsGuides.

Come potete vedere, generare modelli non crea alcun tipo di vista per visualizzare le informazioni su una pagina. Per avere un’applicazione completa e pronta all’uso, avreste bisogno di:

  • generare controller (che a sua volta genera anche le viste) o
  • generare scaffold (che genera il vostro modello, le viste, il controller e scrive nel vostro file routes.rb).

Se cambi idea e decidi di usare scaffold dopo aver già generato il modello, puoi sempre eseguire

$rails generate scaffold <name>

Creerà tutti i file mancanti.

Genera scaffold

Se inserisci il comando

$rails generate scaffold Story title:string content:text

Genererai i seguenti file:

Una volta creati i test relativi al modello, la prossima linea genererà i percorsi delle risorse alle tue storie. Dopo aver generato i percorsi delle risorse arriva il controller e le sue azioni (index, show, new, edit, create, update e destroy), insieme alle viste e ai test del controller per ciascuna di queste azioni.

Il router Rails riconosce gli URL e li collega all’azione di un controller. Per default, l’azione di un controller renderà una vista con lo stesso nome.

Migrazione

Ogni volta che crei una migrazione usando gli script (generate model/generate scaffold) una nuova migrazione viene aggiunta alla directory corretta. Si usa

$rake db:migrate

per controllare quali migrazioni non sono state aggiunte al database.

Distruzione

Ognuno è libero di modificare e fare le modifiche necessarie alla propria applicazione per funzionare come previsto, anche se ciò significa rimuovere completamente scaffold. Puoi rimuovere lo scaffold nel seguente modo:

  1. Genera scaffold:
    $rails generate scaffold Story
  2. Se hai migrato i tuoi file, esegui un rollback:
    $rake db:rollback
  3. Distruggi o annulla lo scaffold:
    $rails destroy scaffold Story

Facendo questo, cancellerai tutti i file creati dallo scaffold ma le modifiche aggiuntive che potresti aver fatto manualmente non saranno rimosse.

Conclusione

Uno scaffold è eccellente da usare quando si tratta di semplici esempi, mockup veloci o test. Tuttavia, assicuratevi di generare i vostri modelli quando decidete di sviluppare una nuova applicazione. Non dimenticare di testare sempre la tua applicazione, scopri come farlo usando Capybara!

Speriamo che tu abbia scoperto qualcosa di nuovo oggi!

Precedentemente pubblicato su https://kolosek.com/rails-scaffold/

Tags

Iscriviti a Hacker Noon

Crea il tuo account gratuito per sbloccare la tua esperienza di lettura personalizzata.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.