如何在少于N个查询中更新N个帖子的“my_field”?

时间:2011-08-30 11:50:52

标签: mysql sql ruby-on-rails ruby-on-rails-3 update-attributes

如何改善以下更新的效果?

Post.find(id1).update_attributes(:my_field => value1)
Post.find(id2).update_attributes(:my_field => value2)
Post.find(id3).update_attributes(:my_field => value3)
        ...                               ...
Post.find(idN).update_attributes(:my_field => valueN)

1 个答案:

答案 0 :(得分:1)

您可以使用update_all

通过单个SQL查询执行此操作
Post.update_all("field = 'value'", "id IN (id1, id2...)")

编辑:这不适用于单个语句,当然你会有N个Post.update_all个句子用于N个帖子,因为每个帖子都有不同的值,但是因为它使得和SQL UPDATE并且不会实例化Post对象目前比Post.find.update_attributes快。