यह है कि मैंने कई विशेषताओं में परिवर्तन के लिए जाँच की समस्या को हल किया।
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 एक हैश लौटाती है और अपने मूल और नए मूल्यों (एक सरणी में) के साथ विशेषताओं का एक हैश लौटाती है।
आप एपीडॉक की जांच कर सकते हैं कि किन संस्करणों ने इन विधियों का समर्थन किया है।
http://apidock.com/rails/ActiveModel/Dirty