तो मैं लोगों को देख रहा हूं .build, .create, और .create! अपने नियंत्रकों के भीतर हाल ही में अधिक से अधिक। बस .new का उपयोग करने से क्या अंतर है और param'd ऑब्जेक्ट को निष्क्रिय करें और फिर। बचाओ? क्या पेशेवर और विपक्ष हैं? इन अन्य तरीकों का उपयोग लाभ प्रदान करते हैं?.build, .create, और .create के बीच अंतर! और उनका उपयोग कब किया जाना चाहिए?
उत्तर
एक जोड़े मतभेद रहे हैं, लेकिन वे बड़ा नहीं कर रहे हैं:
.create
.new
.save
के बाद के बराबर है। यह सिर्फ और संक्षिप्त है।.create!
.new
के समतुल्य है.save!
(विफल होने पर त्रुटि में फेंकता है)। यह भी एक छोटा सा छोटा- मुझे लगता है कि
.build
.new
के लिए उपनाम है। यह works one way in Rails 3 और रेल < 3.x
सबसे महत्वपूर्ण हिस्सा में एक और तरीका यह है कि इन तरीकों एक संघ (has_many
, आदि) स्वचालित रूप से दो मॉडल से जोड़ने के लिए के माध्यम से कहा जा सकता है है।
#create नया का छोटा संस्करण है और सहेजें। #create! वैधता सकारात्मक नहीं होने पर अपवाद फेंक रहा है।
मैं उपरोक्त उत्तरों को दूसरा दूंगा। प्लस create
के लिए, कोई भी false
को एक तर्क के रूप में पास नहीं कर सकता है जिसे आप save
के साथ कर सकते हैं। एक तर्क के रूप false
पासिंग सभी पटरियों को छोड़ देगा सत्यापन
हालांकि यह सही है कि create
कॉल new
और फिर save
वहाँ उनकी वापसी मूल्यों में दो विकल्पों के बीच एक बड़ा अंतर है।
Save
या तो true
या false
देता है इस पर निर्भर करता है कि वस्तु डेटाबेस में सफलतापूर्वक सहेजी गई थी या नहीं। इसके बाद ऊपर दिए गए प्रश्न में पहले उदाहरण के अनुसार प्रवाह नियंत्रण के लिए इसका उपयोग किया जा सकता है।
Create
ऑब्जेक्ट सहेजा गया था या नहीं, इस पर ध्यान दिए बिना मॉडल वापस कर देगा। इस पर उपरोक्त कोड के लिए प्रभाव पड़ता है कि if
कथन की शीर्ष शाखा हमेशा निष्पादित की जाएगी, भले ही ऑब्जेक्ट मान्यताओं में विफल रहता है और सहेजा नहीं जाता है।
यदि आप create
का उपयोग ब्रांचिंग तर्क के साथ करते हैं तो आपको चुप विफलताओं का खतरा होता है, यदि आप new
+ save
का उपयोग करते हैं तो यह मामला नहीं है।
create!
एक ही समस्या से पीड़ित नहीं है क्योंकि यह रिकॉर्ड अमान्य है और अपवाद है।
create
विकल्प नियंत्रकों में उपयोगी हो सकता है जहां respond_with
API (JSON/XML) प्रतिक्रियाओं के लिए उपयोग किया जाता है। इस मामले में ऑब्जेक्ट पर त्रुटियों का अस्तित्व unprocessable_entity
की स्थिति के साथ प्रतिक्रिया में त्रुटियों को वापस करने का कारण बनता है, जो कि आप एक एपीआई से वही चाहते हैं।
मैं हमेशा HTML के लिए new
+ save
विकल्प का उपयोग करता हूं, खासकर यदि आप प्रवाह नियंत्रण के लिए वापसी मूल्य पर निर्भर हैं।
- 1. MD5.Create और MD5CryptoServiceProvider का उपयोग करने के बीच क्या अंतर है?
- 2. रणनीति पैटर्न का उपयोग कब और क्यों किया जाना चाहिए?
- 3. मैं .Create (शून्य) के बजाय .Create (एप्लिकेशन) का उपयोग कर सकते
- 4. SQL सर्वर: CREATE DATABASE
- 5. <%# ... %> और <%= ... %> कब उपयोग किया जाना चाहिए?
- 6. कब, कहां और कैसे कतारों का उपयोग किया जाना चाहिए?
- 7. Flask.g का उपयोग कब किया जाना चाहिए?
- 8. std :: nothrow कब उपयोग किया जाना चाहिए?
- 9. 'CREATE VIEW' एक क्वेरी बैच
- 10. कब जोर देना चाहिए() का उपयोग किया जाना चाहिए?
- 11. कॉपी-लोकल को कब सही किया जाना चाहिए और यह कब नहीं होना चाहिए?
- 12. कीवर्ड CRESTRAINT इस CREATE तालिका कथन
- 13. डेटा कब/डेटा में जाना चाहिए, और इसे/inst/extdata में कब जाना चाहिए?
- 14. ईन्नोएम को कब आवंटित किया जाना चाहिए?
- 15. एसक्यूएल: एक CREATE TRIGGER को GO
- 16. कारखाने/फिक्स्चर बनाम सरल मॉडल .create (...)?
- 17. क्या SQL सर्वर को CREATE/ALTER
- 18. किसी वेब सेवा का उपयोग कब नहीं किया जाना चाहिए?
- 19. कब [असेंबली: InternalsVisibleTo()] का उपयोग किया जाना चाहिए?
- 20. किसी स्मृतिदृश्य का उपयोग कब किया जाना चाहिए?
- 21. सी # में अस्थिर कीवर्ड का उपयोग कब किया जाना चाहिए?
- 22. Win32 InterlockedExchange फ़ंक्शन का उपयोग कब किया जाना चाहिए?
- 23. JAVA_OPTS और JAVA_TOOL_OPTIONS के बीच अंतर?
- 24. आईफोन: नेटवर्क गतिविधि सूचक का उपयोग कब किया जाना चाहिए
- 25. कमजोर संदर्भों का उपयोग कब किया जाना चाहिए?
- 26. initWithFormat कब होगा: तर्क: उपयोग किया जाना चाहिए?
- 27. सुरक्षा एनोटेशन 'denyAll' कब उपयोग किया जाना चाहिए?
- 28. डेटाबेस समानार्थी शब्द का उपयोग कब किया जाना चाहिए?
- 29. निर्माण और तैनाती के बीच अंतर?
- 30. $ _GET/$ _POST/$ _COOKIE के बजाय $ _REQUEST कब और क्यों उपयोग किया जाना चाहिए?
मुझे यह उनके साथ जुड़े मॉडल को जोड़ने में सक्षम होने के उल्लेख के कारण सबसे सही उत्तर के रूप में चुना गया है - यह एक दिलचस्प और महत्वपूर्ण अंतर है जिसे मैं उपयोग करने के बारे में सोचता हूं। नया और .save। जो थोड़ा अतिरिक्त काम करता है। धन्यवाद। –
3 - बिल्ड पर मामूली स्पष्टीकरण सिर्फ नए से थोड़ा अधिक है - यह एसोसिएशन लिंक भी सेट करता है। –
आप कितने रिश्ते में एक एसोसिएशन के माध्यम से कॉल करते हैं? –