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

arn*_*lja 7 optimization activerecord ruby-on-rails query-optimization ruby-on-rails-3

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

有谁知道是否有一个很好的方法来优化这个?我应该使用准备好的语句手动播放,还是Rails3自动处理?是否有另一个SQL命令可以在一个步骤中执行此操作?

谢谢你的帮助

  • 阿恩

Vol*_*ldy 15

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

# Update all books with 'Rails' in their title
Book.update_all "author = 'David'", "title LIKE '%Rails%'"
Run Code Online (Sandbox Code Playgroud)


Red*_*ion 8

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

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