हालांकि यह सही है कि create
कॉल new
और फिर save
उनके वापसी मूल्यों में दो विकल्पों के बीच एक बड़ा अंतर है।
Save
true
या तो रिटर्न या false
इस बात पर निर्भर करता है कि ऑब्जेक्ट डेटाबेस में सफलतापूर्वक सहेजा गया था या नहीं। यह तो ऊपर दिए गए प्रश्न में पहले उदाहरण के अनुसार प्रवाह नियंत्रण के लिए इस्तेमाल किया जा सकता है।
Create
इस मॉडल की परवाह किए बिना कि वस्तु बचाई गई थी या नहीं। इसमें ऊपर दिए गए कोड के निहितार्थ हैं कि if
कथन की शीर्ष शाखा को हमेशा निष्पादित किया जाएगा, भले ही ऑब्जेक्ट सत्यापन विफल हो और सहेजा नहीं गया हो।
यदि आप create
ब्रांचिंग लॉजिक के साथ उपयोग करते हैं तो आपको साइलेंट फेलियर का खतरा है जो कि अगर आप new
+ का उपयोग करते हैं तो ऐसा नहीं है save
।
create!
यदि रिकॉर्ड अमान्य है, तो यह उसी समस्या से ग्रस्त नहीं होता, जैसा कि ऊपर उठता है और अपवाद होता है।
create
जहां वैकल्पिक नियंत्रकों में उपयोगी हो सकता respond_with
एपीआई (JSON / XML) प्रतिक्रिया के लिए प्रयोग किया जाता है। इस स्थिति में ऑब्जेक्ट पर त्रुटियों के अस्तित्व की स्थिति के साथ प्रतिक्रिया में त्रुटियों को वापस करने का कारण होगा unprocessable_entity
, जो कि वास्तव में आप एक एपीआई से चाहते हैं।
मैं हमेशा html के लिए new
+ save
विकल्प का उपयोग करता हूं , खासकर यदि आप प्रवाह नियंत्रण के लिए वापसी मूल्य पर भरोसा कर रहे हैं।