est-il possible d'effectuer une requête Find_By en utilisant une déclaration 'ou'? Par exemple: comme quelque chose comme (ne fonctionne pas): p> merci! P> p>
7 Réponses :
n'utilise pas les méthodes ActiveRecord
Cela pourrait fonctionner: P>
code = params[:code] @product = Product.find(:all, :conditions => ["upc = ? or cspc = ?", code, code])
Merci Nicholas! Exactement ce que je cherchais.
Autant que je sache, les rails ne prennent pas de support automatique ni résultats, hors de la boîte. Mais le SearchLogic code> GEM semble prendre en charge cette fonctionnalité. Voir ici A > p>
Oui, c'était ce que je pensais. J'ai examiné le joyau de la recherche-logique et je l'ai utilisé dans le passé. Merci pour la réponse.
J'ai déjà eu un problème similaire. p>
Un moyen de s'approcher, c'est essayer de déterminer le type de données que vous obtenez en premier lieu. Écrivez du code qui vous dira la différence. p>
peut-être voir s'il existe un moyen de distinction entre UPC et CSPC. P>
Bon point. Je pourrais jeter un oeil à l'ajout d'une vérification de la longueur (les codes UPC-A sont tous de 12 caractères et les CSPC sont 6 ou 7, je crois). Merci.
Nettoyage du code NICHOLAS:
@products = Product.all(:conditions => ["upc = :code or cspc = :code", {:code => params[:code]}])
Merci Omar pour la belle réfractaire. J'ai fini par faire cela pour nettoyer un peu le code.
Si vous utilisez Arel sur Rails 3:
t = Product.arel_table @products = Product.where( t[:upc].eq(params[:code]) \ .or(t[:cspc].eq(params[:code])) ) @product = @products.first if @products.size == 1
AS des rails 5, une façon de le faire est la suivante:
pour le premier enregistrement correspondant: p> pour tous les enregistrements correspondants: P>
AS des rails 6, ActiveRecord a un
0 commentaires
Comment prendriez-vous une de ces réponses et créeriez-vous un
produit.find_by_code code>?