Можно ли как-нибудь определить, не загрязнен ли объект / запись перед сохранением и какие поля изменены в Rails?
Пример
Предположим, у меня есть модель Person, а у Person есть свойство с именем name и age. В БД "Человек с идентификатором 1" называется "Джон" с 20 лет.
p = Person.find 1
p.name #John
p.age #20
Теперь, когда я поменяю его имя с Джона на Натана, могу ли я как-то идентифицировать
- объект изменен (грязный)
- и какие поля были изменены
Теперь я знаю ответ для первого. Если я поменяю его имя на Натну, я могу сделать следующее
p.name = "Nathan"
p.changed? #true
Однако могу ли я в любом случае определить, какое поле было изменено? Может быть метод, который возвращает массив полей, которые были изменены?
p.dirty_fields #[:name]