[ruby-it] Ottmizzazione delle ricerche nel DB

Andrea Longhi andrea74 a mailshack.com
Mar 9 Giu 2009 11:29:37 CEST


Luigi Maresca wrote:

>    @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.

la classe Vote è dispobilile anche nella vista, senza bisogno di 
referenziarla con una variabile di istanza. Ti ricordo pero' che nella 
vista la logica non ci dovrebbe stare, il suo posto è il controller o 
alla peggio l'helper.

> <%for law in @laws-%>
> <%=law.title-%>
> ....
> <%=@votes.count(:all,:conditions=>"law_id=#{law.id} and yes")-%>

Che significa quel and yes?
Comunque, visto che hai dichiarato le associazioni necessarie puoi usare 
direttamente law.votes.count invece di quella robaccia :)

Nel controller puoi usare
@laws=Law.find(:all, :conditions=>'public', :order=>'updated desc', 
:include => :votes)
per tirarti su anche tutti i voti associati alle leggi, ti risparmi un 
po' di query. Quel :conditions => 'public' e' inquietante.

Se vuoi ottimizzare ulteriormente puoi usare una counter cache, trovi 
tutorial in rete o cercati un libro recente su rails, penso che ti 
aiuterebbe molto.
-- 
Posted via http://www.ruby-forum.com/.


More information about the Ml mailing list