rails de sélectionner et de les inclure

Quelqu'un peut-il m'expliquer cela?

Project.includes([:user, :company])

Cela exécute 3 requêtes, l'un pour aller chercher de projets, l'un pour aller chercher les utilisateurs de ces projets et un pour aller chercher entreprises.

Project.select("name").includes([:user, :company])

Cela exécute 3 requêtes, et ignore complètement les sélectionner bits.

Project.select("user.name").includes([:user, :company])

Cela exécute 1 de la requête avec une bonne gauche rejoint. Et encore ignore complètement le sélectionner.

Il me semble que les rails ignore sélectionnez avec la comprend. Ok très bien, mais pourquoi quand je mets un modèle associé à sélectionner t-il passer de la délivrance de 3 requêtes de l'émission de la requête 1?

Noter que le 1 de la requête est ce que je veux, je ne peux pas imaginer que c'est la bonne façon de l'obtenir, ni pourquoi cela fonctionne, mais je ne suis pas sûr de quelle autre manière à obtenir les résultats dans une seule requête (.les jointures semble être la seule à utiliser une JOINTURE INTERNE qui je n'en fait pas envie, et quand j'ai manuellement specifcy les conditions de jointure .les jointures de la recherche gem, nous utilisons les freaks comme il essaie de l'ajouter à nouveau joint avec le même nom).

OriginalL'auteur Chad | 2010-11-12