Итак, я выполняю запрос к базе данных, и у меня есть полный массив объектов:
@attachments = Job.find(1).attachments
Теперь, когда у меня есть массив объектов, я не хочу выполнять другой запрос к базе данных, но я хотел бы отфильтровать массив на основе Attachment
объекта, file_type
чтобы у меня был список того, attachments
где находится тип файла, 'logo'
а затем другой список того, attachments
где тип файла'image'
Что-то вроде этого:
@logos = @attachments.where("file_type = ?", 'logo')
@images = @attachments.where("file_type = ?", 'image')
Но в памяти вместо запроса к БД.
ruby-on-rails
activerecord
Joepour
источник
источник
partition
- например, здесь .Ответы:
Пытаться :
Это отлично :
но для повышения производительности вам не нужно дважды повторять @attachments:
источник
Если ваши вложения
Это будет массив объектов прикрепления
Используйте метод выбора для фильтрации на основе file_type.
Это не вызовет никаких запросов к базе данных.
источник
вы пробовали активную загрузку?
источник
@attachments = Job.first.attachments
выполнен, вы хотите зациклить,@attachments
пока вы не хотите больше запросов к базе данных. это то, что ты хочешь сделать?Вы можете фильтровать, используя где
источник
Я бы поступил немного иначе. Структурируйте свой запрос так, чтобы получать только то, что вам нужно, и отделить оттуда.
Итак, сделайте свой запрос следующим образом:
А затем разделите данные:
Это позволит получить нужные вам данные аккуратно и эффективно.
источник