2013-10-07 5 views
17

क्या रिकॉर्ड बनने के बाद मॉडल के बाद मॉडल में परिवर्तनों को ट्रैक करने का कोई तरीका है? मैंने गंदे मॉड्यूल का उपयोग करने का प्रयास किया है और रिकॉर्ड अपडेट होने पर परिवर्तनों को ट्रैक करने में सक्षम था, लेकिन जब रिकॉर्ड बनाया जाता है तो परिवर्तन दर्ज नहीं होते हैं।ट्रैकिंग मॉडल बाद_commit में बदलता है: ऑन =>: कॉलबैक बनाएं

+0

कुछ बनाया जा रहा है जब कोई बदलाव हो सकता है? –

+0

फ़ील्ड जो शून्य से वैध मान तक जाते हैं। –

उत्तर

45

आप रेल changed? विधि का उपयोग नहीं कर सकते हैं, क्योंकि यह हमेशा झूठी वापसी करेगा। लेनदेन के बाद परिवर्तनों को ट्रैक करने के लिए, previous_changes विधि का उपयोग करें। यह कुंजी के रूप में विशेषता नाम के साथ एक हैश वापस करेगा। फिर आप जांच सकते हैं कि आपका attribute_name हैश में है:

after_commit :foo 

def foo 
if previous_changes[attribute_name] 
    #do your task 
end 
end 
+4

धन्यवाद! और यह जांचने के लिए कि हैश में आपकी विशेषता है या नहीं, तो आप इस तरह कुछ कर सकते हैं अगर @ item.previous_changes.has_key? ('Attribute_name') ' –

संबंधित मुद्दे