Vi faccio subito un esempio per farvi capire cosa intendo:
Blog.find(:all,
:conditions => ["new=? and type=?",true, params[:type_id]])
Il problema è che se non passo il parametro params[:type_id] ottengo un errore, in questo caso facilmente gestibile, ma se avessi 4 o 5 clausole, il tutto sarebbe più macchinoso.
Quindi ho optato per un approccio diverso. Ho preso parte del codice fornitomi da un amico Divoxx e l'ho modificato in modo molto duttile.Per prima cosa scaricate il mio plugin ed installatelo nel vostro progetto:
script/plugin install http://lipsiasoft.googlecode.com/svn/trunk/filterOra per fare quello che abbiamo accennato all'inizio possiamo semplicemente fare cosi:
filters = Filter.new
filters.equal params[:type_id], :type_id if params[:type_id]
filters.great params[:date_start], :created_at if params[:date_start]
filters.less params[:date_end], :created_at if params[:date_end]
filters.equal params[:cat_id], :cat_id if params[:cat_id]
blogs = Blog.find(:all,
:conditions => filters.conditions)
Agile no?
Attendo un bel voto su AgileWebDevelopment




