मैं हमेशा इस धारणा के तहत रहा हूं कि एक रिकॉर्ड बनाने और बचाने के लिए, आपको दौड़ना होगा record.new
तथा record.save
, या record.create
.
मैंने कभी नहीं समझा कि इस कोड में रिकॉर्ड कैसे सहेजा जाता है:
def create
@record = Record.new(record_params)
if @record.save
#do stuff
end
end
मैंने हटा दिया if
लाइन और रिकॉर्ड सहेजा जा रहा है। मैंने सोचा if
बयान सिर्फ परीक्षण की स्थिति, या वे भी कार्रवाई कर सकते हैं?
उत्तर:
जवाब के लिए 2 № 1प्रक्रिया save
विधि कहे जाने के बाद सही या गलत रिटर्न। चरण 1, मॉडल को बचाने की कोशिश करता है। यदि यह सहेजता है, तो रिकॉर्ड सहेजा जाता है और चरण 2, यह सच है। यदि यह सहेजता नहीं है, तो विधि गलत है। यदि आपका कथन नियंत्रित करता है कि प्रत्येक स्थिति के लिए क्या किया जाए।
if @model.save
end
जवाब के लिए 3 № 2
मैंने सोचा कि अगर बयानों ने सिर्फ स्थितियों का परीक्षण किया, या वे प्रदर्शन कर सकते हैं क्रियाएँ भी?
रूबी में, अभिव्यक्ति का मूल्यांकन या तो सत्य या गलत मूल्य देता है, और यह कोई बात नहीं, क्या अभिव्यक्ति ही है।
अभिव्यक्ति झूठी होगी केवल अगर यह वापस आता है nil
या false
, अन्यथा यह सत्य है।
तो, आपके मामले में लौट रहा है, ActiveRecord :: हठ #save
रिटर्न true
यदि रिकॉर्ड सफलतापूर्वक सहेजा गया है, अन्यथा false
.
जवाब के लिए 2 № 3
रूबी में if
एक अभिव्यक्ति है (सब कुछ एक अभिव्यक्ति है) जो सही या गलत है। और किसी भी अन्य भाषा की तरह सामग्री if
या else
या elsif
ब्लॉक चलाए जाते हैं।
जब आप एक अभिव्यक्ति को समर्पित करते हैं जिसके साइड इफेक्ट होते हैं (जैसे डेटाबेस में रिकॉर्ड को सहेजना) तो साइड इफेक्ट बेशक लागू होते हैं! यह अधिकांश प्रोग्रामिंग भाषाओं पर लागू होता है।
def foo
print "Hello "
true
end
if foo
print "world!"
end
उत्तर के लिए 1 № 4
रूबी में (और कई अन्य भाषाओं में) if
बयान परीक्षण हालत। लेकिन हालत का परीक्षण करने के लिए इसे उस स्थिति में कोड का मूल्यांकन करना होगा यानी इसे निष्पादित करना होगा।
तो यह वहाँ कैसे कर रहा है। if
कथन निष्पादित करता है @record.save
, save
विधि को बचाने की कोशिश करता है @record
और रिटर्न true
अगर यह सफलतापूर्वक किया। यदि यह रिकॉर्ड को वापस नहीं बचा सकता है false
.
फिर if
परिणाम की जाँच करता है (true
या false
)। @record
उस समय तक बचत पहले से ही की जाती है।
जवाब के लिए 0 № 5
यहाँ @record.save
रिकॉर्ड को बचाएगा और यह वापस आ जाएगा true
या false
और उस मूल्य का मूल्यांकन किया जाएगा if
जब आप कुछ क्रिया करना चाहते हैं तो आम तौर पर आप इसका इस्तेमाल करेंगे success
या failure
बचाया जा रहा है