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 changed
método devuelve una matriz de los atributos modificados para ese objeto.
Ambos @user.changed
y attrs
son matrices para que pueda obtener la intersección (ver ary & other ary
mé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_attributes
método devuelve un hash de los atributos con sus valores originales y changes
devuelve 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