SORU
6 Mayıs 2010, PERŞEMBE


Raylar: update_attribute vs update_attributes

Object.update_attribute(:only_one_field, "Some Value")
Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")

Bunların her ikisi de açıkça AR güncellemek için söylemek zorunda kalmadan bir nesne güncellenir.

Raylar API diyor ki:

update_attribute için

Güncellemeleri tek bir öznitelik ve normal doğrulama prosedür geçmeden kaydeder. Bu varolan kayıtlar üzerinde boolean bayrakları için özellikle kullanışlıdır. Temel düzenli update_attribute yöntemi varsayılan olarak hangi doğrulamalarını modülünde karışık olduğunda bu ile değiştirilir.

update_attributes için

Tüm öznitelikleri güncellemeleri geçti-Karma ve kaydeder. Eğer nesne geçersiz, kaydetme başarısız olur ve false döndürülür.

Eğer öyleyse nesne ispatlandı istemiyorum eğer update_attribute mi kullanmalıyım. Eğer bu güncelleme varsa ne stackoverflow olacak before_save,?

Benim sorum update_attribute da kaydetmeden önce ya da sadece doğrulama bypass ediyor.

Ayrıca, ne update_attributes... üstünde benim örneğe bakın, bir karma geçirmek için doğru sözdizimi.

CEVAP
6 Mayıs 2010, PERŞEMBE


Hey update_attribute bakın lütfen. Haritayı tıklayarak kaynak kodu aşağıdaki alacaksınız

      # File vendor/rails/activerecord/lib/active_record/base.rb, line 2614
2614:       def update_attribute(name, value)
2615:         send(name.to_s   '=', value)
2616:         save(false)
2617:       end

ve şimdi update_attributes bakın ve koduna bak

      # File vendor/rails/activerecord/lib/active_record/base.rb, line 2621
2621:       def update_attributes(attributes)
2622:         self.attributes = attributes
2623:         save
2624:       end

ikisi arasındaki fark update_attributes oysa save(false) save kullanan veya save(true) diyebilirsiniz update_attribute kullanır.

Söylemek istediğim şey, üzgünüm uzun açıklama için ama önemlidir. Eğer perform_validation false save(perform_validation = true), (atlar uygun kelime olacaktır) save validations tüm assosciated atlar.

İkinci soru için

Ayrıca, ne update_attributes... üstünde benim örneğe bakın, bir karma geçirmek için doğru sözdizimi.

Örnek doğru.

Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")

ya

Object.update_attributes :field1 => "value", :field2 => "value2", :field3 => "value3"

ya da eğer tüm alanları alırsanız, karma veri & adını söyle params[:user] burada sadece kullanın

Object.update_attributes(params[:user])

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FILIPeeeK

    FILIPeeeK

    22 Mayıs 2006
  • GavinMichaelBooth

    GavinMichael

    26 AĞUSTOS 2006
  • metallmanutza13

    metallmanutz

    13 NİSAN 2007