Bonjour,
Encore moi avec une question sur la meilleure façon de faire une
opération. Je vous explique :
Je gère des recettes de cuisine et pour cela j’ai les modèles suivants
(et tables associées) :
- recettes
- ingrédients
- ingredient_recettes (qui fait le lien entre les recettes et les
ingrédients avec en plus la notion de quantité et d’unité de
quantité)
Mes relations sont biens définies et me permettent à partir d’une
recette (id) d’obtenir le nom des ingrédients utilisés (modèle
ingrédient) et la quantité à prendre (modèle ingredients_recettes)
has_many :ingredient_recettes
has_many :ingredients, :through => :ingredient_recettes
En affichage cela donne ceci (et cela marche)
<% @recette.ingredient_recettes.each do |ing| %>
<%= ing.ingredient.name %>: <%= format_qty(ing.quantity) if ing.quantity !=0 %> <
%= ing.unit_qty.name %>
<% end %>
Maintenant ce que je veux c’est à partir de plusieurs recettes qui
sont dans un panier obtenir la liste des courses soit l’ensemble des
ingrédients utilisés dans les recettes, triés et cumulés par
ingrédient et unité de quantité (je ne veux pas cumuler des grammes et
des cuillères)
Quel est à votre avis la meilleure façon de faire pour minimiser les
lignes de code et optimiser la performance
Encore une fois merci de votre aide.
Nicolas