Ось так я вирішив проблему перевірки змін у кількох атрибутах.
attrs = ["street1", "street2", "city", "state", "zipcode"]
if (@user.changed & attrs).any?
then do something....
end
changed
Метод повертає масив атрибутів змінених для цього об'єкта.
Обидва @user.changed
і attrs
є масивами, щоб я міг отримати перехрестя (див. ary & other ary
Метод). Результатом перетину є масив. Зателефонувавши any?
до масиву, я отримую істину, якщо є хоча б одне перехрестя.
Також дуже корисно, changed_attributes
метод повертає хеш атрибутів з їх початковими значеннями та changes
повертає хеш атрибутів з їх початковими та новими значеннями (у масиві).
Ви можете перевірити APIDock, для яких версій підтримуються ці методи.
http://apidock.com/rails/ActiveModel/Dirty