[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