Besoin de vérifier si un bloc d’attributs a changé avant mise à jour à 3 Rails.
Rue1, street2, ville, État, code postal
Je sais que je pourrais utiliser quelque chose comme
Mais ce morceau de code sera très long. Y a-t-il un moyen plus propre ?
Besoin de vérifier si un bloc d’attributs a changé avant mise à jour à 3 Rails.
Rue1, street2, ville, État, code postal
Je sais que je pourrais utiliser quelque chose comme
Mais ce morceau de code sera très long. Y a-t-il un moyen plus propre ?
Découvrez ActiveModel::Dirty (disponible sur tous les modèles par défaut). La documentation est vraiment bonne, mais il vous permet de faire des choses comme :
Voilà comment j'ai résolu le problème du contrôle de changements dans plusieurs attributs.
attrs = ["street1", "street2", "city", "state", "zipcode"]
if (@user.changed & attrs).any?
then do something....
end
@user.changed
() retourne un tableau des attributs changé (http://api.rubyonrails.org/classes/ActiveModel/Dirty.html#method-i-changed)
Les deux @user.changed
et attributes
sont des tableaux afin que je puisse obtenir l'intersection avec l' &
(http://api.rubyonrails.org/classes/ActiveModel/Dirty.html#method-i-changed). Le résultat de l'intersection est un tableau. En appelant any?
sur le tableau, je reçois vrai si il existe au moins une intersection.
Également très utile, l' changed_attributes
méthode retourne la valeur de hachage des attributs avec leurs valeurs d'origine et l' changes
méthode retourne la valeur de hachage des attributs avec leur origine et de nouvelles valeurs (dans un tableau).
Vous pouvez le vérifier APIDock pour les versions prises en charge de ces méthodes. http://apidock.com/rails/ActiveModel/Dirty
n’a pas fonctionné pour moi, parce que le
se cachaient les changements. Donc voilà comment j’ai détecté le modifie dans une `` méthode dans un contrôleur :
Si vous essayez de détecter un grand nombre de modifications d’attributs il pourrait être gênant cependant. Sans doute ne devrait pas le faire dans un contrôleur, mais meh.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.