Чтобы ускорить мой код, который в настоящее время работает, слишком много запросов БД в цикле (bar = find_or_create_by()....
), чтобы создать запись соединения с такими вещами, как foo.bar_id = bar.id
Я решил, что я бы сохранил все bars
в памяти с одним Bar.all
Загрузка до цикла. Вопрос в том, как быстро найти во всех этих bars
для определенного bar.name
? Я попробовал bar.where(name: ...)
, но это возвращается к БД.ruby activerecord отношение коллекция поиск
ответ
Если я правильно понимаю вашу проблему, чтобы ускорить работу, вы можете получить все бары и поместить их в память в хэш, который отображает каждый (bar.name) в массив баров.
, например:
bars_hash = Bar.all.group_by(&:name)
Затем
bars_hash[name]
вернет все бары, которые соответствуют имени или nil
, если нет. При этом вы избегаете последовательного поиска для каждого Foo
.
Но если у вас есть я надеюсь, что ваша память не будет заполняться, если у вас слишком много Bar
сек
Я думаю, что вам нужно:
bars.select { |bar| bar.name == 'the name I want' }
Это использует Enumerable
«s select
API, чтобы выбрать элементы из коллекции, соответствующих запросу.
замечательные, спасибо, я буду принимать, как только это позволяет мне – Killerpixler
- 1. Отношение Activerecord в Ruby с дополнительными фильтрами
- 2. ActiveRecord Отношение
- 3. Rails Поиск шин по ActiveRecord: отношение к нескольким полям
- 4. laravel5.3 отношение (коллекция)
- 5. «Расщепление» коллекция ActiveRecord
- 6. Ruby on Rails, ActiveRecord, Двоичный поиск
- 7. Базовый поиск в Ruby Sinatra ActiveRecord
- 8. Yii - CGridView ActiveRecord отношение
- 9. ActiveRecord ошибка Отношение
- 10. метод on activerecord :: отношение
- 11. Группа ActiveRecord отношение
- 12. Как я могу моделировать это многоуровневое отношение с Ruby ActiveRecord?
- 13. Ruby on Rails has_many отношение
- 14. Ruby on Rails отношение стола
- 15. Rails 5: коллекция ActiveRecord index_by
- 16. Rails ActiveRecord :: Отношение неопределенного метод
- 17. ActiveRecord: Mock has_many отношение call
- 18. Тестирование равенства для ActiveRecord :: Отношение
- 19. Rails ActiveRecord отношение к JSON
- 20. ActiveRecord Отношение к хеш-выходу
- 21. ActiveRecord отношение уровня сбора аксессор
- 22. Включение ActiveRecord :: Отношение к модели
- 23. ActiveRecord :: Отношение печати конкретных атрибутов
- 24. рельсы activerecord отношение соединения таблицы
- 25. ActiveRecord :: Отношение преобразовать хэш медленный
- 26. Отношение Activerecord с пользовательскими ключами
- 27. Рубин на Rails: коллекция ActiveRecord связанные модели
- 28. Backbone отношение: как положить в отношение коллекция и модель?
- 29. Ruby - коллекция методов
- 30. Hibernate поиск коллекция всего
Спасибо, ваш путь гораздо быстрее, так как основано на ключе. последующие поиски из другого ответа заставляют его замедляться из-за большого количества «баров» – Killerpixler