นี่คือวิธีที่ฉันแก้ไขปัญหาการตรวจสอบการเปลี่ยนแปลงในหลายคุณลักษณะ
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