Comment déterminer si un champ dans un modèle / modèle nested a changé?

Existe-t-il un moyen rapide de déterminer si l’un des champs d’un modèle ou l’un des champs de ses modèles nesteds (les associations) est modifié?

Pour voir si un object ActiveRecord a changé, vous pouvez appeler:

instance.changed? 

Pour voir si un atsortingbut spécifique a été modifié, vous pouvez le faire:

 instance.attr_changed? 

où attr est l’atsortingbut que vous voulez vérifier.

Pour vérifier si un modèle nested a changé, vous pouvez simplement faire:

 instance.nested_model.changed? 

Je sais que c’est une vieille question, mais récemment, on a rencontré la même situation.

Vous pouvez obtenir toutes les modifications pour votre modèle nested en utilisant previous_changes méthode previous_changes même après avoir enregistré l’object.

 parent_model_object.nested_model_name.previous_changes 

Cela listera toutes les modifications du modèle nested avec les anciennes et les nouvelles valeurs.

Vous pouvez déterminer si un object a changé mais pas encore enregistré en appelant:

 my_object.changed? 

Vous pouvez également déterminer si les atsortingbuts individuels ont changé (par exemple, vous avez un atsortingbut first_name ):

 my_object.first_name_changed? 

En ce qui concerne les modèles nesteds, je pense que vous devriez appeler le changed? sur chacun d’eux individuellement.