現在 (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_changeInside 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']。