Как я могу сделать инструкцию update, где условие

В Rails 3 как обновить атрибут с условием вроде:

Model.where("state == 'decline'").all.update_attribute(:state, 'deny')

Это определенно неправильно, но я рисую пробел о том, как это сделать.

Ответы

Ответ 1

ActiveRecord:: Relation предоставляет метод update_all.

Model.where(state: 'decline').update_all(state: 'deny')

Ответ 2

Вы также можете связать update_all с объектом, например:

book.chapters.where(:state => 'draft').update_all(:state => 'unpublished')