2014-04-06 40 views
11

, şu var after_update callback'inde değiştirildi özelliklerini alın:Ben şartlı after_update yapmaya çalışıyorum

after_update do |participant| 
    Rails.logger.info "#{self.previous_changes} changed." 
    if self.previous_changes.include?(:current_distance) 
     #Do my stuff ... 
    end 
    end 

logger baskılar boş bir karma: nitelik olmuştur {}

nasıl kontrol edebilirim değişti?

Özniteliği güncellemek için: participant.update_attribute(:current_distance, distance) kullanıyorum.

cevap

16

changesprevious_changes ürününü kullanmak istiyorsunuz. Hala aynı kaydetme işlemindesiniz, aradığınız şey changes'da. Güncelleştirme tamamlandıktan sonra previous_changes bilgisi olmayacak.

5.1.1 RAILS: yeni sürümlerinde kaldırılacaktır olarak saved_changes yerine changes ait
kullanılması.

+0

Harika şeyler! Ancak, "after_update" geri aramasına ulaşıldığında güncelleme tamamlanmamalı mıydı? – kiddorails

+1

Tam geri dönüş zinciri tamamlanana kadar güncelleme "tamamlandı" olarak kabul edilmez. Ayrıntılar için lütfen http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html adresini ziyaret edin. –

İlgili konular