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, save
dö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_change
Rails'in sonraki sürümünde geri arama sonrası içlerin davranışı değişecektir. Yeni dönüş değeri, save
dö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:20 adresindeki some_callback adresinden çağrılır)
Yine, belirtildiği gibi, yöntem saved_change_to_attribute
dö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']
.