lezionerubyonrails lettura

15
Come leggere i dati da una tabella relazionale Marzo 2009- Prof. Silvano Natalizi

Upload: silvano-natalizi-itis-alessandro-volta-perugia

Post on 24-Jun-2015

369 views

Category:

Education


1 download

DESCRIPTION

come leggere i dati da una tabella relazionale e caricarli in memoria. Object relational mapping

TRANSCRIPT

Page 1: Lezionerubyonrails Lettura

Come leggere i dati da una tabella relazionale

Marzo 2009- Prof. Silvano Natalizi

Page 2: Lezionerubyonrails Lettura

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

Page 3: Lezionerubyonrails Lettura
Page 4: Lezionerubyonrails Lettura

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.

Page 5: Lezionerubyonrails Lettura

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.

Page 6: Lezionerubyonrails Lettura
Page 7: Lezionerubyonrails Lettura
Page 8: Lezionerubyonrails Lettura

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

Page 9: Lezionerubyonrails Lettura

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

Page 10: Lezionerubyonrails Lettura

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 ?

Page 11: Lezionerubyonrails Lettura

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.

Page 12: Lezionerubyonrails Lettura
Page 13: Lezionerubyonrails Lettura
Page 14: Lezionerubyonrails Lettura
Page 15: Lezionerubyonrails Lettura

Un libro bellissimo

An amazing book: Head First Rails: Oreilly David Griffiths