У меня есть приложение rails (работает на версии 2.2.2) с моделью Product. Продукт имеет отношение "есть и принадлежит многим" с Feature. Проблема в том, что мне нужно иметь функции поиска для продуктов. Поэтому мне нужно иметь возможность искать товары с похожим названием и некоторыми другими атрибутами. Сложность в том, что поиск также должен возвращать продукты, которые имеют точный набор функций, указанных в форме поиска (это представлено рядом флажков). Следующий код работает, но он кажется мне довольно неэффективным:
@products = Product.find(:all, :conditions=>["home=? AND name LIKE ? AND made_by LIKE ? AND supplier LIKE ? AND ins LIKE ?",hme,'%'+opts[0]+'%','%'+opts[1]+'%','%'+opts[3]+'%','%'+opts[4]+'%'])
#see if any of these products have the correct features
if !params[:feature_ids].nil?
f = params[:feature_ids].collect{|i| i.to_i}
@products.delete_if {|x| x.feature_ids!=f}
end
Извините, что мое понимание rails / sql настолько слабое, но есть ли у кого-нибудь какие-либо предложения о том, как улучшить приведенный выше код? Большое спасибо!