我必须在我的数据库中转换 ~ 1.300.000 条记录。
你知道比这更快的方法吗?

Article.find_each(&:save)

最佳答案

如果您希望更新表中的单个字段,您可以在 ActiveRecord 模型上使用 update_all

Post.update_all(:published=>true)
# UPDATE "posts" SET "published" = 't'

这也适用于 ActiveRecord 范围。
Post.where(:published=>true).update_all(:published=>false)
# SQL (3.3ms)  UPDATE "posts" SET "published" = 'f' WHERE "posts"."published" = 't'

通过使用它,您可以使用条件语句(例如 where )来挑选表中的常见行并对它们执行 update_all。这是假设您想在保存记录之前进行某种形式的属性更新。

关于ruby-on-rails - 更快的保存方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11965444/

10-12 21:47