Bulk update


Rails ActiveRecord – Batch Updates
http://apidock.com/rails/ActiveRecord/Base/update_all/class

Tag.where(:is_featured => true).each do |tag|
  tag.update_attribute(:is_featured, false)
end

これだとTagオブジェクトがロードされるのでメモリーを食ってしまうので直接Update文を実行したい

Rails RDocのActiveRecord::Relation#update_allに記述されている書き方

Tag.where({:is_featured => true }).update_all({ :is_featured => false })

第二引数に条件を付けられるのでこちらの方が簡潔

Tag.update_all({ :is_featured => false }, {:is_featured => true })

どちらも実行されるSQLは同じ

UPDATE `tags` SET `is_featured` = 0 WHERE `tags`.`is_featured` = 1
,