Подтвердить что ты не робот

Обновить несколько строк в Rails 3.2

Я пытаюсь сделать это

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

но я получаю:

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

Каким будет правильный синтаксис? Я бы предпочел не перебирать каждую из них, если мне это не нужно.

4b9b3361

Ответ 1

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

Надеюсь, это поможет...