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-%>
…
<%[email protected](: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