[ruby-it] Ottmizzazione delle ricerche nel DB
Luigi Maresca
marluigi a libero.it
Mar 9 Giu 2009 10:44:56 CEST
Salve ragazzi,
ho costruito un aplicazione dove sono presenti 3 tabelle:
1 - contiene le leggi
2 - contiene gli utenti
3 - contiene i voti degli utenti sugli articoli
la terza tabella è di collegamento alle prime due dato che ogni rigo
(ID) contiene l'id della legge, l'id dell'utente e il voto.
Nella home vengono riportati tutti gli articoli e per ogni articolo
vengono raccolti i numeri di voti positivi e negativi.
I modelli definiscono le varie associazioni:
laws-> has_many:votes
users -> has_many:laws
votes ->
belongs_to :user
belongs_to :laws
nel controller Law definisco la vista index:
def index
@votes=Vote
@laws=Law.find(:all,:conditions=>'public',:order=>'updated desc')
end
Come potete notare @votes non fa alcuna ricerca specifica ma aggancia
l'intera tabella.
Questo mi è necessario perché poi nel ciclo for, della vista index, che
elenca tutte le leggi per ogni legge devo contare all'interno di @votes
il numero di voti:
---------
<%for law in @laws-%>
<%=law.title-%>
....
<%=@votes.count(:all,:conditions=>"law_id=#{law.id} and yes")-%>
<%end-%>
----------
Quindi per ogni articolo visualizzato devo fare un'interrogazione nel DB
o meglio nell'array @votes.
Veniamo alla domanda:
esiste un modo più efficace e meno impegnativo per la CPU?
mi sapete dare qualche suggerimento per migliorare il codice?
Grazie mille
Luigi
--
Posted via http://www.ruby-forum.com/.
More information about the Ml
mailing list