在Rails 3.2中更新多行

时间:2013-03-14 23:20:29

标签: ruby-on-rails activerecord

我正在尝试这样做

User.find([23,45,68,123]).update_all(:is_active => true)

但我明白了:

NoMethodError: undefined method `update_all' for #<Array:0x00000007493778>

正确的语法是什么?如果我不需要,我宁愿不迭代每一个。

1 个答案:

答案 0 :(得分:67)

find会返回一个数组,因此您无法使用update_all

要解决此问题,我认为您可以使用where,它会返回ActiveRecord::Relation,因此update_all应该有效:

User.where(:id =>[23,45,68,123]).update_all(:is_active => true)

http://apidock.com/rails/ActiveRecord/Relation/update_all

我希望它有所帮助...