2011-02-06 8 views

cevap

84

durum için isteğe bağlı ikinci parametre ile kullanın update_all:

Model.update_all({ hidden: true }, { phonenum: some_phone_number}) 
+2

Ne bir değer ex update_all için belli değerin altında olması halinde ilgili ({: gizlenmiş => true}, {: DATE_CREATED ctilley79

+7

ctilley79 @, ben bu işe gerektiğini düşünüyorum: 'Model.where ("date_create Dogbert

+0

Not: Bu bir 'counter_cache' güncelleştirmek olmaz. Dikkatli ol. – sscirrus

84

raylar koşullar 3. kapsamı birlikte kullanın update_all edebilirsiniz izin vermez update_all

Model.where(phonenum: some_phone_number).update_all(hidden: true) 

Referans: http://m.onkey.org/active-record-query-interface

+4

** Bu ** yanlıştır. Sayfada, 'seçenekler' karma değerine gidebilen çeşitli seçenekleri açıklayan yöntem listesinin yukarısındaki paragrafa göre "** herhangi bir seçenek sağlama **" yazıyor. Bu, update_all() 'üzerindeki' koşullar 'argümanını içermez. – Ashe

+0

ben yanılıyor katılıyorum. migrated_at bir hafta içinde, şimdi burada API Avatar.update_all [ 'migrated_at =?', Time.now.utc], [ 'migrated_at>?' 1.week.ago] 'e göre = göç biçimde ayarlanır. – ctilley79

+4

Raylar 4 belgelerine göre, yukarıda önerilen yöntem gerçekten de yoldur - http://apidock.com/rails/ActiveRecord/Relation/update_all - # Tüm kitapları "Rails" ile başlıkları altında güncelleyin Book.where ('title GİBİ?', '% Raylar%') update_all (yazar:. 'David') –

4

Eğer geri aramalar tetiklemek istiyorsanız:

class ActiveRecord::Base 
    def self.update_each(updates) 
    find_each { |model| model.update(updates) } 
    end 

    def self.update_each!(updates) 
    find_each { |model| model.update!(updates) } 
    end 
end 

Ardından:

Model.where(phonenum: some_phone_number).update_each(hidden: true) 
İlgili konular