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.