Вы можете преобразовать массив объектов arr
в ActiveRecord :: Relation, как это (предполагая, что вы знаете, какой класс являются объектами, что вы, вероятно, делаете)
MyModel.where(id: arr.map(&:id))
Вы должны использовать where
, но это полезный инструмент, который вы не должны неохотно использовать. И теперь у вас есть однострочное преобразование массива в отношение.
map(&:id)
превратит ваш массив объектов в массив, содержащий только их идентификаторы. И передача массива в предложение where будет генерировать инструкцию SQL с IN
, которая выглядит примерно так:
SELECT .... WHERE `my_models`.id IN (2, 3, 4, 6, ....
Имейте в виду, что порядок массива будет потерян - Но поскольку ваша цель состоит только в том, чтобы запустить метод класса в коллекции этих объектов, я предполагаю, что это не будет проблемой.