[ruby-it] Ottmizzazione delle ricerche nel DB
Andrea Longhi
andrea74 a mailshack.com
Gio 11 Giu 2009 00:45:11 CEST
Luigi Maresca wrote:
> Un'altra domanda:
> ma un comando di questo tipo
>
> law.votes.count
>
> implica una ricerca nel DB così come il comando
>
> @votes.count(:all,:conditions=>"law_id=#{law.id} and yes")
>
> ?
Dipende. Se hai già raccolto i voti associati a quella legge no. Per
toglierti questi dubbi è sufficiente guardare il file development.log
mentre smanetti con l'applicazione nel browser, o ancora meglio nella
console in casi come questo. Da teminale se sei su un sistema unix-like:
tail -f log/development.log
> e inoltre c'è differenza, sempre dal punto di vista dello sfruttamento
> del DB, se la ricerca viene eseguita nel controller oppure nella vista?
No, ma certe cose nelle viste non ci dovrebbero essere.
> Per Andrea Longhi:
>
> Perché :conditions=>'public' è inquitante???
Perche' non è il massimo della chiarezza, come lo yes del resto...
pessimo nome per un campo, non trovi? Sai, finche' il codice lo legge
solo chi lo scrive va bene qualsiasi schifezza basta che funzioni(si fa
per dire, quando dopo 6 mesi rileggi il tuo stesso codice ti voglio
proprio vedere se capisci al volo cosa significa il campo yes), ma se lo
devono leggere anche gli altri... beh meglio che sia chiaro.
Io espliciterei la condizione con
@laws = Law.all(:conditions => {:public => true})
o ancora meglio metterei un named_scope nel modello:
class Law < ActiveRecord::Base
named_scope :public, :conditions => {:public => true}
# ...
end
così quando scrivi Law.public ti trova tutte le leggi pubbliche...
potresti fare la stessa cosa coi voti, qualcosa del tipo:
class Votes < ActiveRecord...
named_scope :positive, :conditions => {:yes => true}
#....
end
--
Posted via http://www.ruby-forum.com/.
More information about the Ml
mailing list