プロパティを更新したいIDのリストがある場合updated_at
、データベースのフィールドは変更されないようです。これが私が意味することです:
ids = [2,4,51,124,33]
MyObj.where(:id => ids).update_all(:closed => true)
この更新が実行された後、updated_at
フィールドは変更されません。ただし、レールコンソールに入っrails c
てこれを行うと:
obj = MyObj.find(2)
obj.closed = false;
obj.save!
このステートメントの後、updated_at
フィールドの値が変更されます。どうしてこれなの?updated_at
これが発生したときに更新をリッスンし、アプリ全体のフローを実行しているため、アプリのこのフィールドに依存していますか?
編集
私はdax
答えから次のことを知りました:
Timestamps
Note that ActiveRecord will not update the timestamp fields (updated_at/updated_on) when using update_all().
一度に 1 つのレコードを更新したくないのですが、これを回避する方法はありますか? SQLレベルに頼らずに?