En una aplicación Rails 2 que estoy compilando, tengo la necesidad de actualizar una colección de registros con atributos específicos. Tengo un alcance con nombre para encontrar la colección, pero tengo que iterar sobre cada registro para actualizar los atributos. En lugar de hacer una consulta para actualizar varios miles de registros, tendré que hacer varias miles de consultas.Actualizando varios registros a la vez en rieles
Lo que he encontrado hasta ahora es algo así como Model.find_by_sql("UPDATE products ...)
Esto se siente muy joven, pero yo Googled y miraron a su alrededor SO y no he encontrado mi respuesta.
Para mayor claridad, lo que tengo es:
ps = Product.last_day_of_freshness
ps.each { |p| p.update_attributes(:stale => true) }
Lo que quiero es:
Product.last_day_of_freshness.update_attributes(:stale => true)
update_all solo está disponible en Rails 3 - desafortunadamente la pregunta sobre Rails 2. –
@Taryn East no es verdad, 'update_all' se movió de ActiveRecord :: Base a ActiveRecord :: Relación entre rails 2.3.xy 3.0 - I ha actualizado el enlace y ha agregado un comentario para aclarar. –
Ah genial, gracias ...¡no me di cuenta de eso! –