更新多个记录的单个属性的最佳实践

时间:2011-02-18 21:37:47

标签: ruby-on-rails ruby-on-rails-3 optimization activerecord query-optimization

我现在正在当前的Rails3项目中编写一个导出器。此导出器必须将每个导出的记录标记为“已导出”(bool)。我知道如何在循环中轻松完成这项工作,但老实说,让Rails查询数据库(例如连续300次)只是为了在300条记录上设置一个字段感觉不太好。

有谁知道是否有一种优化方法?我应该使用准备好的语句手动播放,还是Rails3自动处理?是否有另一个SQL命令可以一步完成?

感谢您的帮助

  • ·阿尔

2 个答案:

答案 0 :(得分:15)

在Class上使用update_all方法。来自Rails API

# Update all books with 'Rails' in their title
Book.update_all "author = 'David'", "title LIKE '%Rails%'"

答案 1 :(得分:8)

由于ActiveRecord 4.0不推荐使用这种方式(Rails API),目前的做法是:

# Update all books with 'Rails' in their title
Book.where('title LIKE ?', '%Rails%').update_all(author: 'David')