Existe-t-il un moyen rapide de savoir si l'un des champs d'un modèle ou des champs de ses modèles imbriqués (associations a.k.a.) a changé?Comment déterminer si un champ dans un modèle/modèle imbriqué a changé?
Répondre
Pour voir si un objet ActiveRecord a changé, vous pouvez appeler:
instance.changed?
Pour voir si un attribut spécifique a été changé, vous pouvez le faire:
instance.attr_changed?
où attr est l'attribut vouloir vérifier.
Pour vérifier si un modèle imbriqué changé, vous pouvez simplement faire:
instance.nested_model.changed?
Vous pouvez déterminer si un objet a changé, mais pas encore été enregistré en appelant:
my_object.changed?
Vous pouvez également déterminer si les attributs individuels ont changé (que vous avez un attribut first_name
):
my_object.first_name_changed?
En ce qui concerne les modèles imbriqués, je pense que vous devrez composer le changed?
individuellement.
Merci pour vos réponses! Mais est-il possible de vérifier si les attributs d'un modèle imbriqué ont changé sans savoir à l'avance quels modèles imbriqués un modèle a? – Zabba
Je ne pense pas, il y a probablement un wa y pour obtenir une liste de tous les modèles associés, mais je ne le sais pas sur le dessus de ma tête. Comme Mike mentionné ci-dessus, les observateurs peuvent être utiles. Puis-je vous demander ce que vous essayez d'accomplir avec tout cela, car il pourrait y avoir une meilleure solution. –
Merci, C'est ce qu'on appelle la réponse parfaite. –
Je sais que c'est une vieille question mais récemment rencontré la même situation.
Vous pouvez obtenir toutes les modifications pour votre modèle imbriqué en utilisant la méthode previous_changes
même après avoir enregistré l'objet.
parent_model_object.nested_model_name.previous_changes
Ceci affichera tous les changements dans le modèle imbriqué avec l'ancienne et la nouvelle valeur.
- 1. Comment déterminer si l'objet nHibernate a changé
- 2. Comment déterminer si un champ a un focus?
- 3. déterminer si l'image src a changé
- 4. Doctrine listener - exécute l'action uniquement si un champ a changé
- 5. comment déterminer si l'utilisateur a appuyé/sélectionné un champ uitext?
- 6. Comment vérifier si un assemblage a changé
- 7. comment déterminer si un champ existe?
- 8. Comment déterminer si le numéro de téléphone a changé?
- 9. Comment déterminer si l'emplacement de l'iframe a changé?
- 10. table JFace lorsque le champ imbriqué modèle a changé
- 11. Vérifie si un lien symbolique a changé
- 12. Comment déterminer ce qui a changé DependencyProperty
- 13. si spinner a changé
- 14. Comment obtenir un champ imbriqué
- 15. champ de mise à jour MySQL sur insert si un autre champ (non clé) a changé
- 16. Dans CakePHP, comment pouvez-vous déterminer si un champ a été modifié dans une action d'édition?
- 17. Comment puis-je savoir si un "assemblage" a vraiment changé?
- 18. Comment détecter si un élément de mon ObservableCollection a changé
- 19. Zend_From Validateur uniquement si l'entrée de champ a changé?
- 20. Django: Déterminer si un utilisateur a voté
- 21. Vérifier si quelque chose a changé dans un déclencheur
- 22. Détecter si l'URL dans un iFrame a changé
- 23. Comment puis-je savoir si un champ a changé de valeur dans un objet AT dans plone?
- 24. déterminer si un fichier a été sélectionné
- 25. Comment savoir si j'utilise un shell imbriqué?
- 26. Comment vérifier si XmlDocument a changé?
- 27. Comment définir un champ de sélection dans un formulaire imbriqué?
- 28. Comment Linq Déterminer si une propriété a un champ de stockage?
- 29. Comment détecter si une variable a changé?
- 30. Comment déterminer si un fichier a fini de télécharger
Merci pour vos réponses! Mais existe-t-il un moyen de vérifier si les attributs d'un modèle imbriqué ont changé sans savoir à l'avance quels sont les modèles imbriqués d'un modèle? – Zabba
Je voudrais vérifier Rails Observers: http://api.rubyonrails.org/classes/ActiveRecord/Observer.html qui pourrait potentiellement informer le modèle parent de la modification. –
Je ne pense pas que les modifications nested_model (association) sont suivies https://rails.lighthouseapp.com/projects/8994/tickets/541-dirty-attributes-with-associations – lulalala