Я пытаюсь выбрать тысячи строк из списка идентификаторов в Rails. В принципе, есть ли хороший способ решить эту проблему в рельсах: Самый эффективный способ выбора тысяч строк из списка идентификаторов
Что-то вроде:
big_array = [1,3,53,68,...,100003,100040] users = User.find(big_array)
Я думал об использовании rails массовый импорт и последующее объединение импортированных данных. Однако я бы предпочел не переделывать это, если оно уже существует.
each_slice (чистый рубин), вероятно, будет работать лучше, чем in_groups_of (метод рельсов, который, между прочим, использует each_slice)
each_slice
in_groups_of
big_array.each_slice(1000) do |ids| users = User.find(ids) ... end
Откуда вы взяли это big_array?Возможно, есть более идиоматическое решение с find_each или find_in_batches
big_array
find_each
find_in_batches
Если идентификаторы отсортированы, сгруппируйте их и запросите по частям (если они не отсортированы, сортируйте их):
lots_of_ids.in_groups_of( 100, false ) do |ids| models = MyModel.find( ids ) models.do_whatever_you_want_with_them end