18

updated_atいくつかのレコードを更新したいと思います:

users = User.in_mailing_list
users.update_all(:updated_at => Time.now)

メソッドのようなものを言う、目的のための近道はありusers.touch_allますか?

4

5 に答える 5

11

rhernando の回答が古いバージョンの Ruby で機能するかどうかはわかりませんが、これは私の意見ではより明確な方法であり、Ruby 2+ で機能します。

users.each(&:touch)
  • 注意。コメントで述べたように、単一のコマンドで実行する update_all を使用するのとは対照的に、これにより N 個のリクエストが発生します。
于 2014-10-23T04:19:39.657 に答える
8

次のように実行できます。

User.update_all({updated_at: Time.now}, {id: user_ids})

注: 中かっこが必要です。それ以外の場合は、user_idsの場所を更新する代わりにupdated_at andを設定しようとします。 idupdated_at id

乾杯!

于 2014-12-24T16:07:55.620 に答える
-1

これはそれを行う必要があります:

User.update(users, :updated_at => Time.now)
于 2013-10-18T10:33:41.237 に答える