Object.update_attribute(:only_one_field, "Some Value")
Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")
ये दोनों AR को अपडेट करने के लिए स्पष्ट रूप से बताए बिना एक ऑब्जेक्ट को अपडेट करेंगे।
रेल एपीआई कहते हैं:
update_attribute के लिए
एकल विशेषता को अद्यतन करता है और सामान्य सत्यापन प्रक्रिया से गुजरे बिना रिकॉर्ड को बचाता है। यह मौजूदा रिकॉर्ड पर बूलियन झंडे के लिए विशेष रूप से उपयोगी है। आधार में नियमित update_attribute विधि को इसके साथ बदल दिया जाता है जब सत्यापन मॉड्यूल को मिलाया जाता है, जो कि डिफ़ॉल्ट रूप से होता है।
update_attributes के लिए
पास-इन हैश से सभी विशेषताओं को अपडेट करता है और रिकॉर्ड को बचाता है। यदि ऑब्जेक्ट अमान्य है, तो बचत विफल हो जाएगी और झूठी लौटा दी जाएगी।
इसलिए अगर मैं ऑब्जेक्ट को मान्य नहीं करना चाहता, तो मुझे update_attribute का उपयोग करना चाहिए। क्या होगा अगर मेरे पास पहले से यह अपडेट है_ तो क्या यह स्टैकओवरफ्लो होगा?
मेरा सवाल यह है कि update_attribute भी सेव या सिर्फ वैरिफिकेशन से पहले बाईपास कर देता है।
इसके अलावा, update_attributes को हैश पास करने के लिए सही सिंटैक्स क्या है ... शीर्ष पर मेरा उदाहरण देखें।
before_save
कॉलबैक के भीतर सेट हैं )। update_attribute(:discount, 0.1) if amount > 100
तुम्हारे बजाय Fe कर सकता था discount = 0.1 if amount > 100
। ऑब्जेक्ट पर update_attribute
कॉल save
, जो इस मामले में अनावश्यक है, क्योंकि स्टेटमेंट एक before_save
कॉलबैक के अंदर है और वैसे भी बच जाएगा। मुझे उम्मीद है कि इसका कोई अर्थ है।
update_attribute
अंदर एक स्टेटमेंट क्यों डालना चाहते हैंbefore_save
? मैं इसके लिए एक अच्छा कारण नहीं सोच सकता।