【Rails】update where in について

最初こうやってたけど、updateが複数回実行される形だったので非効率だった。

ids = [1, 2, 3]
values = Array.new(ids.size, {status: false})
User.update(ids, values)

# => update users set status = 0 where id = 1
# => update users set status = 0 where id = 2
# => update users set status = 0 where id = 3

こうすれば良いらしい。

ids = [1, 2, 3]
User.where('id in (?)', ids).update_all(status: false)

# => update users set status = 0 where id in (1, 2, 3)

inの場合、プレースホルダを括弧で囲まないとSQLのエラーになって少しハマった。以上です