mysql - rails ActiveRecord : Looking for a db agnostic version of this statement

标签 mysql ruby-on-rails ruby-on-rails-3 postgresql activerecord

我有一个针对 mysql 服务器执行此操作的迁移:

ActiveRecord::Base.connection.execute("update 'comments' set 'slug' = NULL;")

此语句的目的是删除每一行的“slug”值。
该表中有数百万行,使用 ruby​​ 执行类似 Comment.each...

的操作时速度非常慢

有没有办法重写这个查询,使其与数据库无关,或者至少在 MySQL 和 postgresql 之间工作正常?

谢谢!

最佳答案

Comment.update_all(:slug => nil)

这会生成查询 UPDATE "comments"SET "slug"= NULL

您还可以对范围和条件进行批量更新。例如,您可以:

Comment.where(:some_attribute => "some_value").update_all(:slug => nil)

这会产生 UPDATE "comments"SET "slug"= NULL WHERE (some_attribute = 'some_value')

关于mysql - rails ActiveRecord : Looking for a db agnostic version of this statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8364709/

相关文章:

ruby-on-rails - 我如何返回这个 ruby 数组

ruby-on-rails - 在 Rails 的另一个模块中动态包含模块

mysql - rails 3 : What is the best way to update a column in a very large table

php - cakephp - 使用多词搜索字符串构建查询,搜索多个字段

MySQL 服务器 : stored procedures - when do i create the stored procedures?

MySQL - 选择与多对多属性列表同时出现的所有属性的有效方法

mysql - Django 中创建 MySQL 数据库的问题

ruby-on-rails - Elasticsearch 实现为微服务

ruby-on-rails - Rails - 如何构建类似网格的产品页面列表

ruby-on-rails - ActionView::Template::Error(不兼容的字符编码:UTF-8 和 ASCII-8BIT)