Salve a tutti,
la struttura del DB è la seguente.
ho 4 tabelle:
books
categories
authors
nationalities
books -> belongs_to: categories, authors, nationalities
quindi nella tabella books ci sono category_id, author_id e
nationality_id.
Nel sito è ovviamente possibile fare tutte le possibili scelte e quindi:
solo la categoria;
la categoria e l’autore;
categoria, autore e nazionalitÃ
etc…
Per fare una ricerca all’interno della tabella books in base ai
parametri selezionati ho scritto nel controller:
if @category==“tutti” and @nation==“tutte” and @author==“tutti”
@books=Book.find(:all,:order=>‘title’)
end
if not (@category==“tutti” and @nation==“tutte” and @author==“tutti”)
@books=Book.find(:all,:conditions=>[“category_id=? and nationality_id=?
and
author_id=?”,@selected_cat,@selected_nat,@selected_aut],:order=>‘title’)
end
if @nation==“tutte” and not (@category==“tutti” and @author==“tutti”)
@books=Book.find(:all,:conditions=>[“category_id=? and
author_id=?”,@selected_cat,@selected_aut],:order=>‘title’)
end
if @category==“tutti” and not (@nation==“tutte” and @author==“tutti”)
@books=Book.find(:all,:conditions=>[“nationality_id=? and
author_id=?”,@selected_nat,@selected_aut],:order=>‘title’)
end
if @author==“tutti” and not (@category==“tutti” and @nation==“tutte”)
@books=Book.find(:all,:conditions=>[“category_id=? and
nationality_id=?”,@selected_cat,@selected_nat],:order=>‘title’)
end
if @nation==“tutte” and @category==“tutti” and not @author==“tutti”
@books=Book.find(:all,:conditions=>[“author_id=?”,@selected_aut],:order=>‘title’)
end
if @nation==“tutte” and @author==“tutti” and not @category==“tutti”
@books=Book.find(:all,:conditions=>[“category_id=?”,@selected_cat],:order=>‘title’)
end
if @author==“tutti” and @category==“tutti” and not @nation==“tutte”
@books=Book.find(:all,:conditions=>[“nationality_id=?”,@selected_nat],:order=>‘title’)
end
Secondo voi come si può snellire il codice?
Grazie mille in anticipo!
Luigi