2010-03-24 7 views
15

क्या रिकॉर्ड रिकॉर्ड करने के लिए #save विधि का उपयोग किया जा सकता है?क्या मौजूदा रिकॉर्ड को अपडेट करने के लिए Rails ActiveRecord #Save विधि का उपयोग किया जा सकता है?

मुझे पता है कि मैं बचाने का उपयोग कर एक नया रिकॉर्ड बना सकते हैं, इस तरह:

person = Person.new 
person.save # rails will insert the new record into the database. 

हालांकि, अगर मैं एक मौजूदा रिकॉर्ड पहले मिल जाए, मॉडल, संशोधित करने, और फिर इसे बचाने के लिए, है यह एक अद्यतन के रूप में एक ही परिणाम?

person = Person.find(:first, :condition => "id = 1") 
person.name = "my_new_name" 
person.save # is this save performing a update or insert? 

उत्तर

20

हां। रेल में एक ActiveRecord ऑब्जेक्ट आईडी पैरामीटर में अपनी पहचान बरकरार रखता है। यदि आईडी सेट की गई है, तो रेल उस आईडी के साथ डेटाबेस में रिकॉर्ड अपडेट करने के बारे में जानेंगे।

save वास्तव में, किसी ऑब्जेक्ट को डेटाबेस में सहेजने, अपडेट करने या किसी भी तरह से सहेजने का प्राथमिक तरीका है। update_attributes जैसी अन्य विधियां सिर्फ चीनी हैं जो save का उपयोग अपने मूल पर करती हैं।

+3

यह सच नहीं है .. व्यक्ति = व्यक्ति.न्यू व्यक्तिगत.आईडी = 23 व्यक्ति.save विफल रहता है .. यह कोई आईडी नहीं है जो इसे बताती है यह नया है। – baash05

+0

बचाता है पूर्ववर्ती होना चाहिए? क्या यह सिर्फ व्यक्ति हो सकता है। नाम = 'नया नाम'? – flyingarmadillo

+0

यह काम नहीं करता है। सहेजें दोनों मौजूदा रिकॉर्ड अपडेट करता है और वैसे भी एक नया बनाता है। – Green

4

यह एक अद्यतन है।

save(perform_validation = true)

# File vendor/rails/activerecord/lib/active_record/base.rb, line 2533 
2533:  def save 
2534:   create_or_update 
2535:  end 
+2

मजेदार कैसे तीन साल बाद यह तरीका बेस.आरबी में नहीं है ... – themarketka

संबंधित मुद्दे