Выберите тысячи строк по идентификаторам в Rails ActiveRecord - PullRequest
1 голос
/ 23 декабря 2011

Я пытаюсь выбрать тысячи строк из списка идентификаторов в Rails. В принципе, есть ли хороший способ решить эту проблему в рельсах: Самый эффективный способ выбора тысяч строк из списка идентификаторов

Что-то вроде:

big_array = [1,3,53,68,...,100003,100040]
users = User.find(big_array)

Я думал об использовании rails массовый импорт и последующее объединение импортированных данных. Однако я бы предпочел не переделывать это, если оно уже существует.

Ответы [ 2 ]

1 голос
/ 23 декабря 2011

each_slice (чистый рубин), вероятно, будет работать лучше, чем in_groups_of (метод рельсов, который, между прочим, использует each_slice)

big_array.each_slice(1000) do |ids|
  users = User.find(ids)
  ...
end

Откуда вы взяли это big_array?Возможно, есть более идиоматическое решение с find_each или find_in_batches

0 голосов
/ 23 декабря 2011

Если идентификаторы отсортированы, сгруппируйте их и запросите по частям (если они не отсортированы, сортируйте их):

lots_of_ids.in_groups_of( 100, false ) do |ids|
    models = MyModel.find( ids )
    models.do_whatever_you_want_with_them
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...