Lezionerubyonrails Lettura
-
Upload
silvano-natalizi-itis-alessandro-volta-perugia -
Category
Education
-
view
363 -
download
1
description
Transcript of Lezionerubyonrails Lettura
Come leggere i dati da una tabella relazionale
Marzo 2009- Prof. Silvano Natalizi
Quando Rails legge le righe di una tabella relazionale, converte ciascuna riga in un oggetto.
I dati dei campi della riga sono convertiti negli attributi dell’oggetto creato
L' Object-Relational Mapping (ORM) è una tecnica di programmazione per convertire dati fra RDBMS e linguaggi di programmazione orientati agli oggetti
Un record ha molti campi con dati in ciascuno di essi.
Come fanno tutti questi dati ad essere memorizzati in un singolo oggetto?
La risposta è che un oggetto ha parecchi attributi. Un attributo di un oggetto è come un campo di un
record di una tabella relazionale Ha un nome ed un valore Quando Rails legge il valore voto dal record nel
database, lo immagazzina nell’attributo @voti.voto dell’oggetto @voti.
La stessa cosa avviene per gli altri campi del record.
L’oggetto @voti esattamente combacia con il record del database
Ciò è importante perché questo oggetto in memoria è visibile dal codice della view!
I dati sono in memoria e la pagina web li può vedere
La pagina show.html.erb dispone di questi dati.
Una pagina indice ha la lista di tutti i record della tabella.
Ogni riga della pagina è una riga della tabella con alcuni dei suoi campi
È utile avere una pagina web così fatta, per permettere ai navigatori di avere una visione globale dei dati disponibili e quindi magari di esaminare in dettaglio quello al quale sono interessati
La pagina indice necessita dei dati da tutti i record della tabella relazionale
Il codice del controllore viene eseguito solo una volta prima che la pagina web sia mostrata.
Pertanto tutte le righe della tabella devono essere lette completamente in un colpo solo prima che sia mostrata la view
Come fa il controllore a leggere tutti gli oggetti del modello e ad inviarli alla view?
Voti.find(:all) è un metodo finder che legge tutti i record in un colpo solo.
Il modello restituisce un solo oggetto che contiene i dati di ogni record della tabella
Il controllore può assegnare questo oggetto ad una singola variabile
Ma come può assegnare tutti questi dati con un numero sconosciuto di riche ad un singolo oggetto ?
Che cosa è questo oggetto ?
Invece di restituire un oggetto contenente i dati di un singolo record, il metodo find crea tanti oggetti, uno per ciascun record e li coagula in un unico array
Voti.find(:all) restituisce un singolo array Questo array contiene tanti model objects
quante sono le righe della tabella del database La view invece di vedere un numero
sconosciuto di modelli d’oggetti in memoria, ha a che faro solo con un array per ottenere l’accesso a tutti gli oggetti.
Un libro bellissimo
An amazing book: Head First Rails: Oreilly David Griffiths