Ini adalah bagaimana saya memecahkan masalah memeriksa perubahan di banyak atribut.
attrs = ["street1", "street2", "city", "state", "zipcode"]
if (@user.changed & attrs).any?
then do something....
end
The changedMetode mengembalikan array atribut berubah untuk objek.
Keduanya @user.changeddan attrsarray sehingga saya bisa mendapatkan persimpangan (lihat ary & other arymetode). Hasil persimpangan adalah array. Dengan memanggil any?array, saya menjadi kenyataan jika setidaknya ada satu persimpangan.
Juga sangat berguna, changed_attributesmetode mengembalikan hash atribut dengan nilai aslinya dan changesmengembalikan hash atribut dengan nilai asli dan baru (dalam array).
Anda dapat memeriksa APIDock untuk versi mana yang mendukung metode ini.
http://apidock.com/rails/ActiveModel/Dirty