2010-10-11 9 views
7

मेरे पास ActivityObserver है, जो tasks देख रहा है, और इसमें after_update कॉलबैक है।क्या कोई रेलवे तरीका है यह जांचने के लिए कि कौन से गुण पर्यवेक्षक में अपडेट किए गए हैं?

मैं परीक्षण करना चाहता हूं कि update में कोई विशेष विशेषता संशोधित की गई है या नहीं।

क्या इस विषय के गुणों की तुलना करने के लिए एक रेल मार्ग है जो अद्यतन से पहले थे, या यह जांचने के लिए कि क्या वे बदल गए हैं?

उत्तर

9

जब एक बाद_अपडेट कॉलबैक निष्पादित किया जा रहा है, तो प्रत्येक ActiveModel ऑब्जेक्ट में changed_attributes नामक एक विधि होती है। आप इसे अपने डीबग पर्यावरण में देख सकते हैं। प्रत्येक ActiveRecord ऑब्जेक्ट में यह विधि है। इसमें सभी मूल्यों का हैश बदल गया है/संशोधित किया गया है। इसे गंदा वस्तु के रूप में भी जाना जाता है।

बाहर की जाँच करें कि यह शिक्षण सामग्री

Railscasts

Dirty Object

+1

धन्यवाद! इससे कोई फर्क नहीं पड़ता कि रेलवे मैं कितना करता हूं, सीखने के लिए हमेशा कुछ नया होता है। – nfm

1

में से कुछ अपने पर्यवेक्षक में निम्नलिखित की तरह कुछ भी नहीं होना चाहिए।

class ActivityObserver < ActiveRecord::Observer 

    def after_update(activity) 
    if activity.attribute_name_changed? 
     puts "The above condition will return true or false, and this time it has returned true..!!!" 
    end 
    end 

end 

उपर्युक्त विधि करेगा। मुझे लगता है कि आप इसे ढूंढ रहे थे ..