Rails rajoute des quotes dans mon ordre SQL

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

J’ai trouvé la solution, au lieu de gérer les recettes.id dans une
chaine de caractère (in_rec) je les gère dans un array.

Nicolas

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs