Así es como resolví el problema de verificar los cambios en múltiples atributos.
attrs = ["street1", "street2", "city", "state", "zipcode"]
if (@user.changed & attrs).any?
then do something....
end
El changedmétodo devuelve una matriz de los atributos modificados para ese objeto.
Ambos @user.changedy attrsson matrices para que pueda obtener la intersección (ver ary & other arymétodo). El resultado de la intersección es una matriz. Al llamar any?a la matriz, me vuelvo verdadero si hay al menos una intersección.
También es muy útil, el changed_attributesmétodo devuelve un hash de los atributos con sus valores originales y changesdevuelve un hash de los atributos con sus valores originales y nuevos (en una matriz).
Puede verificar APIDock para saber qué versiones admiten estos métodos.
http://apidock.com/rails/ActiveModel/Dirty