Filtrare i risultati in modo Agile con Ruby on Rails
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.
Per prima cosa scaricate il mio plugin ed installatelo nel vostro progetto:
script/plugin install http://lipsiasoft.googlecode.com/svn/trunk/filter Ora 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
Commenti
Categories
- Altro (17)
- Comunicati Stampa (2)
- Fedora (1)
- Linux (17)
- Mac (45)
- Ruby (20)
- Ruby on Rails (39)
- Tutorials (20)
- Windows (13)
Archivi
- October 2008 (1)
- June 2008 (1)
- May 2008 (5)
- April 2008 (2)
- March 2008 (1)
- January 2008 (3)
- December 2007 (5)
- November 2007 (5)
- October 2007 (9)
- September 2007 (1)