Object.update_attribute(:only_one_field, "Some Value")
Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")
Her ikisi de bir nesneyi açıkça AR'ye güncellemesini bildirmek zorunda kalmadan güncelleyecektir.
Rails API diyor:
update_attribute için
Tek bir özelliği günceller ve normal doğrulama prosedüründen geçmeden kaydı kaydeder. Bu özellikle mevcut kayıtlardaki boole bayrakları için kullanışlıdır. Base'deki normal update_attribute yöntemi, varsayılan olarak onaylama modülü karıştırıldığında bununla değiştirilir.
update_attributes için
Aktarılan Karma öğesindeki tüm öznitelikleri günceller ve kaydı kaydeder. Nesne geçersizse, kayıt başarısız olur ve false döndürülür.
Nesnenin doğrulanmasını istemiyorsam update_attribute kullanmalıyım. Bu güncelleştirmeyi bir önceki_kaydımda varsa, yığın akışı olacak mı?
Benim sorum update_attribute da önce kaydetmek veya sadece doğrulama atlamak olduğunu.
Ayrıca, update_attributes öğesine bir karma iletmek için doğru sözdizimi nedir ... üstteki örneğime göz atın.
before_save
geri arama içinde ayarlanır ). update_attribute(:discount, 0.1) if amount > 100
Senin yerine Fe yapabilirdi discount = 0.1 if amount > 100
. ifade bir geri arama içinde olduğundan ve yine de kaydedilecektir , bu durumda gereksiz olan nesne üzerinde update_attribute
çağırır . Umarım bu mantıklıdır. save
before_save
update_attribute
ifade koymak istiyorsunuzbefore_save
? Bunun için iyi bir neden düşünemiyorum.