J'ai une application rails (exécutée sur la version 2.2.2) qui a un modèle appelé Product. Le produit est dans une relation de type "a-et-appartient-à-plusieurs" avec Feature. Le problème est que j'ai besoin d'une fonctionnalité de recherche pour les produits. Donc, je dois être capable de rechercher des produits qui ont un nom similaire, et d'autres attributs. La partie délicate est que la recherche doit également retourner les produits qui ont l'ensemble exact de fonctionnalités indiquées dans le formulaire de recherche (ceci est représenté par un ensemble de cases à cocher). Le code suivant fonctionne, mais il me paraît assez inefficace:Construction d'une requête "appartenances multiples"
@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
Je suis désolé que ma compréhension des rails/sql est si faible, mais que quelqu'un a des suggestions sur la façon d'améliorer le code ci-dessus? Merci beaucoup!
Encore une chose: si ma réponse vous a aidé, s'il vous plaît marquer comme la réponse à votre question (la coche verte) :) 10qu –