如何在条件中执行更新语句

时间:2012-02-08 01:55:33

标签: ruby-on-rails ruby-on-rails-3

在Rails 3中,如何使用以下条件更新属性:

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

这绝对是错误的,但我在如何实现这个目标上画了一个空白。

2 个答案:

答案 0 :(得分:38)

ActiveRecord::Relation提供update_all方法。

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

答案 1 :(得分:4)

您还可以将update_all链接到范围,例如:

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