Mi sapreste dire qual'è il modo migliore per creare una query dinamica col metodo Find.
Mi spiego, se ho una form che permette di fare un ricerca per tot campi e non ne compilo alcuni, voglio, che tali campi vengano ignorati durate la ricerca ovvero che per essi venga restituto l'intero range di valori presenti a DB.
Es. ho un Model "Posts" con due campi :title e :body
poi ho una form che mi permetta la ricerca su essi; io voglio che partendo dalla query di base
codice:
SELECT * FROM posts WHERE 1
possa aggiungere "dinamicamente"
SE :title != ''
codice:
AND title = :title
SE :body != ''
codice:
AND body LIKE '%:body%'
quindi a priori non conosco il numero di campi su cui svolgere la ricerca ma solo dopo il SUBMIT della form.
Scrivere dunque questo set di istruzioni:
codice:
title = params[:query]
body = '%' + params[:query] + '%'
@posts = Post.find(:all, :conditions => ["title = ? OR body like ?",title,body])
mi crea problemi sul come renderla "dinamica".
Grazie