En ce moment, j'essaie d'appeler mon modèle et de cracher ses résultats au format json/xml. Mon seul problème est, mes associations de base de données ne sont pas chargées ou interrogées.Précharger des associations de modèles sur Rechercher
Normalement, je peux exécuter ce
@campaign = Campaign.find(:all)
ensuite obtenir le nombre de hits en appelant, @campaign[0].hits
par le has_many :hits
. Mais si vous déboguez la sortie, elle n'appelle que les colonnes de la table. Comment l'auriez-vous mis à côté de votre requête?
Dans l'exemple:
<campaign> <category>website</category> <created-at type="timestamp">2009-01-24 14:49:02 -0800</created-at> <end-at type="date">2009-01-24</end-at> <id type="integer">14</id> <is-watched type="integer">1</is-watched> <name>Lets</name> <slug>c5334415da5c89384e42ce6d72609dda</slug> <start-at type="date">2009-01-24</start-at> <user-id type="integer">5</user-id> </campaign>
Puis l'avoir ajouter à la place une autre colonne, mais il witht nombre de hits.
<campaign> <category>website</category> <created-at type="timestamp">2009-01-24 14:49:02 -0800</created-at> <end-at type="date">2009-01-24</end-at> <id type="integer">14</id> <is-watched type="integer">1</is-watched> <name>Lets</name> <slug>c5334415da5c89384e42ce6d72609dda</slug> <start-at type="date">2009-01-24</start-at> <user-id type="integer">5</user-id> <hits type="integer">123412</hits> </campaign>
qui fait ce que j'ai demandé, mais est-il possible de ne pas renvoyer les lignes, mais de les compter juste, et retourner l'entier? – Garrett
Oui. ActiveRecord renvoie une associationProxy (qui agit comme un tableau mais a plus de super-pouvoirs). Une méthode qu'il a est "taille()". Donc, vous pouvez faire @campaign = Campaign.find (: all,: include =>: hits) @ campaign.each faire | cpg | met "Hits: # {cpg.hits.size}" fin –
AssocationProxy a "nombre", "taille" et "longueur", couverts ici: http://rhnh.net/2007/09/26/ counting-activerecord-associations-count-taille-ou-longueur –