現在 (2017 年 8 月) Google のトップにあるので、後でこれを見る人へ: ActiveModel::Dirtyが少し変更されたため、この動作はRails 5.2で変更され、Rails 5.1 の時点で非推奨の警告があることに注意してください。 .
何を変更すればよいですか?
attribute_changed?
-callbacks でメソッドを使用している場合after_*
、次のような警告が表示されます。
非推奨の警告: attribute_changed?
Inside of after コールバックの動作は、Rails の次のバージョンで変更されます。新しい戻り値は、返された後にメソッドを呼び出す動作を反映しますsave
(たとえば、現在の戻り値の反対)。現在の動作を維持するには、saved_change_to_attribute?
代わりに を使用してください。(/PATH_TO/app/models/user.rb:15 の some_callback から呼び出されます)
言及されているように、関数を に置き換えることでこれを簡単に修正できますsaved_change_to_attribute?
。したがって、たとえば、 にname_changed?
なりsaved_change_to_name?
ます。
同様に、 を使用しattribute_change
て前後の値を取得している場合、これも変更され、次のようにスローされます。
非推奨の警告: attribute_change
Inside of after コールバックの動作は、Rails の次のバージョンで変更されます。新しい戻り値は、返された後にメソッドを呼び出す動作を反映しますsave
(たとえば、現在の戻り値の反対)。現在の動作を維持するには、saved_change_to_attribute
代わりに を使用してください。(/PATH_TO/app/models/user.rb:20 の some_callback から呼び出されます)
繰り返しますが、言及されているように、メソッドは名前を変更saved_change_to_attribute
します["old", "new"]
。または use saved_changes
、すべての変更を返します。これらには としてアクセスできますsaved_changes['attribute']
。