Jointure triée et cumulée

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

Nicolas :

Quel est à votre avis la meilleure façon de faire pour minimiser les
lignes de code et optimiser la performance

Il faut d’abord faire une première version du code qui marche
avant de penser à l’élégance, la concision ou la rapidité de
la solution.

L’optimisation des prématurés est sur la route des villes, etc.

– Jean-François.


Ruby ( http://www.rubyfrance.org ) on Rails ( http://www.railsfrance.org
)

Oui mais je voulais éviter de partir dans une mauvaise direction car
je pensais soit

  • faire une requête sql
  • regarder du côté active record calculation
  • utiliser une collection d’objets que j’instancie avec mes
    ingrédients en balayant les recettes dans mon panier. Avec des
    méthodes d’ajout ou d’addition et de tri dans la collection

Cette configuration étant assez standard (produits commandés par les
clients d’une région), je me disais qu’il existait peut être quelque
chose dont je pouvais m’inspirer

Pour info, je suis pour l’instant passé par find_by_sql avec une
requête standard.

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