2009-09-29 9 views
1

Est-il possible de limiter un enregistrement actif :include pour dire seulement tirer un enregistrement? J'ai une liste d'articles, et chaque article a entre 5 et 15 photos. Rails incluent avec les options

Item.find(:all, 
    :include => [ :external_ratings, :photos => LIMIT 1 ]) 
Je veux charger un identifiant de photo dans la mémoire, mais je n'ai pas besoin de tous. Je veux juste prévisualiser le premier.

Existe-t-il un moyen de le faire avec ActiveRecord?

Répondre

0

Je ne crois pas qu'il soit possible de le faire directement, mais comme trouver un enregistrement n'est qu'une seule requête, pourquoi ne pas le faire en dehors de l'include?

par exemple

first_photo = Photo.find(records.first.photo_id) 

Après votre principale find

+0

je suis sûr que cela fonctionnerait trouver, mais si j'ai 50 entrées, il faudra le faire 50 fois différentes. Cela fonctionne bien maintenant avec l'inclusion, il est juste en train de tirer dans la mémoire plus d'informations que j'ai besoin. ;-( – holden

+0

Pouvez-vous clarifier ce que vous voulez dans votre question? Vous voulez soit 1record ou 50, mais on ne sait pas ce que vous essayez de faire – DanSingerman

+0

Désolé, je l'ai un peu changé, mais fondamentalement je suis en train de récupérer une liste d'articles, et chaque élément a plusieurs images et notes.Je veux toutes les notes incluses, mais je n'ai besoin d'une image pour chaque élément, essentiellement un aperçu – holden

0

Je ne vais pas enquêter sur la requête détaillée, mais je pense find_by_sql est en ordre pour ce cas particulier.

Questions connexes