2011-06-21 7 views
112

after_create और after_save कार्यक्षमता के अनुसार समान हैं?`after_create` और 'after_save` के बीच क्या अंतर है और किस का उपयोग करना है?

मैं अपने खाते के निर्माण के बाद किसी उपयोगकर्ता के ईमेल के साथ एक ऑपरेशन करना चाहता हूं।

मैं डेटाबेस में सहेजने पर उस ऑपरेशन को करना चाहता हूं।

जो उपयोग करने के लिए बेहतर है: after_create या after_save?

उत्तर

193

after_create केवल एक बार काम करता है - रिकॉर्ड के पहले ही बनाया गया है।

after_save हर बार जब आप वस्तु को बचाने के काम करता है - भले ही आप बस इसे

तो अपडेट कर रहे हैं कई साल बाद अगर आप केवल सिर्फ एक बार (और फिर कभी नहीं फिर से) इस ईमेल आपरेशन करना चाहते हैं तो after_create का उपयोग ।

आप इसे वस्तु सहेजा जाता है हर समय क्या करना चाहते हैं, तो यह after_save

89

में क्या the docs से:

after_create()

पर बुलाया है के बाद Base.save नई ऑब्जेक्ट्स जिनमें अभी तक सहेजा नहीं गया है (कोई रिकॉर्ड मौजूद नहीं है)।

after_save()

Base.save (यह एक या अद्यतन बचाने बनाने चाहे की परवाह किए बिना) के बाद कहा जाता है।

1
after_save() 

ठीक काम करता है आप मॉडल है कि बहुत बार नहीं सहेजते को बचाने के लिए जब। बदलते रिकॉर्ड के इस विशेष उदाहरण के लिए बार-बार इसका इस्तेमाल करने

after_commit() 

सुनिश्चित करें कि मॉडल डेटाबेस में सहेजी गई है उचित होगा पहले कार्रवाई निष्पादित किया जाता है after_commit: calculate_credit_score

def calculate_credit_score 
    #Call a Cron job 
end 
संबंधित मुद्दे