Bunu daha sonra gören herkese, şu anda (Ağustos 2017) Google'ın başında geliyor: Bu davranışın Rails 5.2'de değiştirileceğini ve Rails 5.1'den itibaren ActiveModel :: Dirty olarak kullanımdan kaldırma uyarılarına sahip olduğunu belirtmek gerekir. biraz değişti .
Neyi değiştireceğim?
-Callbacks attribute_changed?yöntemini kullanıyorsanız after_*, aşağıdaki gibi bir uyarı görürsünüz:
DEPRECATION UYARI: attribute_changed?Rails'in sonraki sürümünde geri arama sonrası içlerin davranışı değişecektir. Yeni dönüş değeri, savedöndürüldükten sonra yöntemin çağrılması davranışını yansıtır (örneğin, şimdi döndürdüğünün tersi). Geçerli davranışı korumak için saved_change_to_attribute?bunun yerine kullanın. (/PATH_TO/app/models/user.rb:15 adresindeki some_callback adresinden çağrılır)
Bahsettiği gibi, bunu işlevle değiştirerek kolayca düzeltebilirsiniz saved_change_to_attribute?. Örneğin, name_changed?olur saved_change_to_name?.
Benzer şekilde, attribute_changeönceki değerleri almak için de kullanıyorsanız , bu da değişir ve aşağıdakileri atar:
DEPRECATION UYARI: attribute_changeRails'in sonraki sürümünde geri arama sonrası içlerin davranışı değişecektir. Yeni dönüş değeri, savedöndürüldükten sonra yöntemin çağrılması davranışını yansıtır (örneğin, şimdi döndürdüğünün tersi). Geçerli davranışı korumak için saved_change_to_attributebunun yerine kullanın. (/PATH_TO/app/models/user.rb:20 adresindeki some_callback adresinden çağrılır)
Yine, belirtildiği gibi, yöntem saved_change_to_attributedöndürülen adı değiştirir ["old", "new"]. veya kullanın saved_changes, bu da tüm değişiklikleri döndürür ve bunlara şu şekilde erişilebilir saved_changes['attribute'].