Я тщательно исследовал это, и я не могу найти ответ, который мне нужен.
Я знаком с транзакциями Rails, но транзакция в этом случае будет выполнять несколько запросов, и я бы не стал этого делать.
Как в одном запросе как обновить один и тот же столбец в нескольких строках уникальными значениями?
Ex:
update_hash = {1: 'Bandits on the High Road', 2: 'Broccoli: The Menace'}
Books.where(<id_is_in_update_hash_keys>).each do |b|
matching_hash_key = b.id
new_title = update_hash[:matching_hash_key].value
# problem here because each update is a query
b.update(title: new_title)
end
Конечно, я мог бы обернуть это в транзакцию, но книги по 10 тыс. По-прежнему вызывают запросы по 10 тыс. Я использую Postgresql, но я не знаю правильного идиоматического способа обновления этого поля для нескольких объектов в одном запросе. Данные были предварительно проверены, поэтому никогда не потребуется запускать проверки.
Если кто-нибудь знает либо код Rails для выполнения, либо, скорее всего, запрос Postgresql, который мне нужно сгенерировать, я был бы очень признателен.