Witam,
zastanawiam się czy istnieje jakaś możliwość żeby conditions można było dobrać poprzez ify. Problem mam taki: próbuję zrobić bardziej rozbudowaną wyszukiwarkę z kilkoma polami i chcę zrobić tak, że jak jakieś pole zostaje niewypełnione to żeby w conditions nie pojawiało się ono do wyszukiwania.
if age == '' && !sex
find(:all, :order => 'brand ASC')
elsif age == ''
find(:all, :conditions => ['(sex LIKE ? OR sex LIKE ?)', "#{sex}", "0"], :order => 'brand ASC')
elsif !sex
find(:all, :conditions => ['minage <= ? AND maxage >= ?', "#{age}", "#{age}"], :order => 'brand ASC')
else
find(:all, :conditions => ['minage <= ? AND maxage >= ? AND (sex LIKE ? OR sex LIKE ?)', "#{age}", "#{age}", "#{sex}", "0"], :order => 'brand ASC')
end
W takiej postaci działa, ale mam w sumie 5 takich pól więc z tego już wychodzi bardzo dużo kombinacji i chciałabym to zrobić w jakiś mądrzejszy sposób. Próbowałam sprawdzać czy jakieś pole zostało wysłane i wtedy do zmiennej dodawać kolejny warunek, ale coś zepsułam i dostawałam taki błąd:
wrong number of bind variables (1 for 2), nie wiedziałam jak go naprawić. Macie jakieś pomysły?