【问题标题】:Best practise for updating single attribute on multiple records更新多条记录的单个属性的最佳实践
【发布时间】:2011-06-30 03:10:30
【问题描述】:

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

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

感谢您的帮助

  • 阿恩

【问题讨论】:

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


    【解决方案1】:

    由于 ActiveRecord 4.0 这种方式已被弃用 (Rails API),目前的做法是:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 嘿,谢谢你指点我。我应该在 API 文档中看到这一点。似乎正是我想要的!
      • 小心这一点,因为它直接更新数据库并且不会命中验证或回调,类似于update_column
      猜你喜欢
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-15
      • 1970-01-01
      相关资源
      最近更新 更多