Dites un user
a beaucoup trees
et trees
ont beaucoup apples
. Supposons qu'une méthode prenne l'identifiant d'un utilisateur. Je veux éventuellement les données à ressembler à quelque chose comme ceci:Comment saisir tous les enregistrements imbriqués de la manière la plus efficace. Rails
[
{ tree_id1: [apple1, apple2, apple3] },
{ tree_id2: [apple4, apple5, apple6] },
{ tree_id3: [apple9, apple8, apple7] }
]
donc je vais finalement avoir à parcourir les arbres de l'utilisateur et associer les pommes avec elle. Mais je ne veux pas avoir à frapper la base de données pour récupérer les pommes de l'arbre à chaque fois. Cela semble être un N + 1 (obtenir les arbres de l'utilisateur, puis toutes les pommes de l'arbre).
Que puis-je faire pour récupérer efficacement les enregistrements nécessaires afin de pouvoir organiser les enregistrements dans le format de données dont j'ai besoin?
Lorsque vous effectuez des requêtes N + 1 ... pourquoi est-ce si grave? Où est la base de données par rapport au code de l'application lorsque vous dites que vous êtes sur heroku? Est-ce un appel réseau?
Donc une fois que je faites cela, que se passe-t-il exactement? Tous les enregistrements sont en mémoire, donc si j'appelle 'tree.apples' il ne frappe pas la base de données? Est-ce une fonctionnalité de rails ou une fonctionnalité sql? – Jwan622