Bonjour,
Je veux executer une requete find_by_sql où j’ai en paramètre (?) le
IN de mySQL. IN que je construit en concaténant les éléments “in”.
Malheureusement à l’instanciation Rails a l’ai re rajouter des quotes
là où MySQL n’en veut pas.
Pour être plus clair voici le code.
1- Find by SQL
@ing_list = Ingredient.find_by_sql([“select
ingredient_recettes.recette_id, ingredients.name,
ingredient_recettes.quantity, unit_qties.name
from ingredient_recettes, ingredients, unit_qties
where ingredient_recettes.recette_id in ?
and ingredients.id = ingredient_recettes.ingredient_id
and unit_qties.id = ingredient_recettes.unit_qty_id
order by ingredients.name, unit_qties.name”, in_rec])
2- in_rec est construit comme une concaténation
in_rec = in_rec + recette.id.to_s + “,”
pour obtenir un chaine de caractère comme suit : (1,4, 6)
3- l’instanciation donne la requête suivante avec le in_rec entre
quote ‘(1,4,6)’ provoquant une erreur mysql (vu dans le log)
select ingredient_recettes.recette_id, ingredients.name,
ingredient_recettes.quantity, unit_qties.name
from ingredient_recettes, ingredients, unit_qties
where ingredient_recettes.recette_id in ‘(768,25)’
and ingredients.id = ingredient_recettes.ingredient_id
and unit_qties.id = ingredient_recettes.unit_qty_id
order by ingredients.name, unit_qties.name
Avez vous une idée sur la façon de supprimer ces quotes, y a-t-il
quelque chose que je fais mal?
Merci de votre aide