[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