Определение того, является ли запись / объект «грязными» в Rails

Могу ли я определить, является ли объект / запись грязным перед сохранением и какие поля изменены в Rails?

Пример

] Предположим, у меня есть модель Person, а у Person есть свойство name и age. В базе данных Человек с идентификатором 1 назван «Джон» с 20 лет.

p = Person.find 1
p.name #John
p.age #20

Теперь, когда я меняю его имя с Джона на Натан, могу ли я каким-то образом идентифицировать

  1. объект изменен (грязный) )
  2. и какие поля были изменены

Теперь я знаю ответ для первого. Если я изменю его имя на Натхна, я смогу сделать следующее

p.name = "Nathan"
p.changed? #true

Однако могу ли я определить, какое поле было изменено? Может быть метод, который возвращает массив полей, которые были изменены?

p.dirty_fields #[:name]
7
задан denniss 27 August 2011 в 00:16
поделиться