Определение, является ли запись / объект грязным в Rails - PullRequest
7 голосов
/ 27 августа 2011

Можно ли как-нибудь определить, не загрязнен ли объект / запись перед сохранением и какие поля изменены в 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]

1 Ответ

8 голосов
/ 27 августа 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...