在我创建的rails 2应用程序中,我需要更新具有特定属性的记录集合。我有一个命名范围来查找集合,但我必须遍历每个记录以更新属性。与其让一个查询更新几千条记录,我不得不做几千条查询。在rails中一次更新几条记录
我已经发现迄今是像Model.find_by_sql("UPDATE products ...)
这感觉很初级,但我GOOGLE了,环顾四周SO,并没有发现我的答案。
为清楚起见,我有什么是:
ps = Product.last_day_of_freshness
ps.each { |p| p.update_attributes(:stale => true) }
我要的是:
Product.last_day_of_freshness.update_attributes(:stale => true)
update_all仅在Rails 3上可用 - 不幸的是Rails 2的问题。 – 2011-03-22 16:44:30
@Taryn East不正确,'update_all'已从ActiveRecord :: Base移动到ActiveRecord :: rails 2.3.x和3.0之间的关系 - I已经更新了链接并添加了一条评论来澄清。 – 2011-03-22 16:46:07
很酷,谢谢...没有意识到! – 2011-03-22 16:49:44