2009-09-29 3 views
1

Можно ли ограничить ActiveRecord :include, чтобы сказать, что только вытащить одну запись?Рельсы включают с опциями

Item.find(:all, 
    :include => [ :external_ratings, :photos => LIMIT 1 ]) 

У меня есть список предметов, и каждый товар имеет от 5 до 15 фотографий. Я хочу загрузить идентификатор фотографии в память, но мне не нужны все они. Я просто хочу просмотреть первый.

Есть ли способ сделать это с помощью ActiveRecord?

ответ

0

Я не верю, что это можно сделать напрямую, но поскольку поиск одной записи - это всего лишь один запрос, почему бы не сделать это за пределами include?

например

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

После вашей основной find

+0

Я уверен, что это сработает, но если у меня будет 50 записей, это будет нужно сделать 50 раз. Он отлично работает сейчас с включением, он просто втягивает в память больше информации, чем мне нужно. ;-( – holden

+0

Можете ли вы уточнить, что хотите в своем вопросе? Вы либо хотите 1record, либо 50, но неясно, что вы пытаетесь сделать. – DanSingerman

+0

Извините, я немного поменял его. Но в основном я извлекаю список элементов, и каждый элемент имеет несколько изображений и оценок. Я хочу, чтобы все рейтинги были включены, но мне нужно только одно изображение для каждого элемента, в основном предварительный просмотр. – holden

0

Я не собираюсь исследовать подробный запрос, но я думаю, find_by_sql в порядке для этого конкретного случая.

Смежные вопросы