Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best practise for updating single attribute on multiple records

I am writing an exporter within my current Rails3 project right now. This exporter has to mark every exported record as "exported" (bool). I know how to do this easily in a loop, but honestly, it doesn't feel very good to let Rails query the database, say, 300 times in a row, just to set one field on 300 records.

Does anyone know if there's a good way to optimize this? Should I play manually with prepared statements, or does Rails3 take care of this automagically? Is there another SQL command to do this in one step or something?

Thanks for your help

  • Arne
like image 961
arnekolja Avatar asked Feb 18 '11 21:02

arnekolja


1 Answers

Use update_all method on Class. From Rails API:

# Update all books with 'Rails' in their title
Book.update_all "author = 'David'", "title LIKE '%Rails%'"
like image 88
Voldy Avatar answered Jan 22 '23 05:01

Voldy