После долгих исследований я решил опубликовать свои выводы / ответы:
Нет такой библиотечной функции ActiveRecord, которая может обновлять
массив объектов с уникальными значениями.
Если предположить, что Activerecord выполнит один запрос на обновление, это будет выглядеть так:
UPDATE books
SET title = CASE id
WHEN 0 THEN 'my first book'
WHEN 4 THEN 'Nice Title'
END,
author = CASE id
WHEN 0 THEN 'Danny DeVito'
END
WHERE id IN (0,4)
Тот же вопрос, что и ", как мне обновить несколько строк с разными значениями одновременно ". Это противоречило бы дизайну модели Activerecord, поскольку объект представляет строку и отображает строки в таблицах. Очевидное ограничение для такой простой модели для работы.
Любое присвоение атрибутам объекта вызывает «грязный» флаг на
этот атрибут, и любой последующий вызов для обновления / сохранения этого
объект будет инициировать запрос, даже если назначенное значение атрибута
совпадает с предыдущим значением базы данных / модели. Вызывая
Метод save (), когда никакие назначения не были сделаны, не вызывает это
запрос.