2010-03-24 11 views
15

Bir kayıt güncellemek için #save yöntemi kullanılabilir mi?Can Rails ActiveRecord #save yöntemi varolan bir kaydı güncelleştirmek için kullanılabilir mi?

ben böyle, kaydetmek kullanarak yeni bir rekor oluşturabilir biliyoruz:

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

Ancak, öncelikle varolan kaydı bulursanız, modelini değiştirmek ve kaydettikten sonra, bu Güncelleme yapmakla aynı sonuç nedir?

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

cevap

20

Evet. Rails'deki bir ActiveRecord nesnesi kimliğini ID parametresinde korur. Eğer ID ayarlanmışsa, Rails veritabanındaki kaydı o ID ile güncellemeyi bilecektir. Aslında, bir nesneyi veritabanına kaydetmek, güncellemek veya herhangi bir şekilde herhangi bir şekilde kaydetmenin birincil yolu aslında, esastır. update_attributes gibi diğer yöntemler, yalnızca çekirdeklerinde save kullanın.

+3

Bu doğru değil .. kişi = Kişi.new person.id = 23 kişi.save başarısız oluyor .. bu yeni. – baash05

+0

kaydetme önceden oluşturulmalı mı? sadece kişi olabilir.name = 'yeni isim'? – flyingarmadillo

+0

Çalışmıyor. Kaydet hem mevcut bir kaydı günceller hem de yeni bir tane oluşturur. – Green

4

bu bir güncelleştirmedir.

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

Üç yıl sonra bu yöntemin base.rb'de artık ne kadar komik olduğunu… – themarketka

İlgili konular