2012-02-08 8 views
16

、どのように私のような条件で属性を更新しないUPDATE文を実行するにはどうすればよい:私は条件がRailsの3では

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

これは間違いなく間違っているが、私は達成するためにどのように空白を描いていますこの。

答えて

34

ActiveRecord::Relationは、update_allメソッドを提供します。あなたには、また、対象外update_allをチェーンでき

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

、それはすぐデシベルの呼び出しを行い、配列にコレクションを変換します。これは、遅延ロードのパフォーマンスを冗長にするので、非常にまれにしか役に立ちません。 –

3

:また `.all`方法に注意してください

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