У меня есть приложение rails (работает на версии 2.2.2), которое имеет модель под названием Product. Продукт находится в отношениях has-and-to-many с Feature. Проблема в том, что мне нужны функции поиска для продуктов. Поэтому мне нужно иметь возможность искать продукты с похожим именем и некоторые другие атрибуты. Сложная часть состоит в том, что поиск должен также возвращать продукты, которые имеют точный набор функций, указанных в форме поиска (это представлено связкой флажков). Следующий код работает, но он поражает меня как весьма неэффективно:Построение запроса has-and-of-many
@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
Я сожалею, что мой обхват рельсов/SQL настолько слаб, но есть ли какой-либо предложения о том, как улучшить приведенный выше код? Спасибо!
И еще одно: если мой ответ помог вам, пожалуйста, отметьте его в качестве ответа на ваш вопрос (зеленая галочка) :) 10qu –