यह है कि मैंने कई विशेषताओं में परिवर्तन के लिए जाँच की समस्या को हल किया।
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