26562


`User`モデルがあり、`has_many :posts`の関係の`Post`モデルが`title`カラムを持ってる時に、  
特定のユーザーのタイトルを一括で `nil` に変更したく

[code]

    user.posts.find_each{ |post| post.update(title: nil) }
    
[/code]

という書き方をしているのですが、もっと効率的な書き方はないでしょうか？


CC BY-SA 3.0
2016-06-08T07:23:42.527
26559
2016-06-08T08:29:33.570
3271
question
ruby-on-rails
特定のカラムの値を一括で nil に変更する方法


`update_all` を利用すると、効率的なSQLになります。

[code]

    user.posts.update_all(title: nil)
    # UPDATE "posts" SET "title" = NULL WHERE "posts"."user_id" = ?  [["user_id", 1]]
    
[/code]


CC BY-SA 3.0
2016-06-08T08:29:33.570
26562
2016-06-08T08:29:33.570
76
26559
answer