17 votes

Possibilité de sauter les validations sur update_attributes ?

Cela semble être un problème stupide mais je ne trouve la réponse nulle part !

Est-il possible de update_attributes() et sauter les validations, comme dans save(validate: false) ?

J'ai un formulaire long avec quelques longues text (pas string ), et j'aimerais offrir à l'utilisateur la possibilité d'enregistrer sa progression sur le formulaire. Normalement, je veux que les réponses aient une longueur minimale, etc., avant que l'utilisateur puisse soumettre le formulaire et passer à autre chose, mais dans le cas où l'utilisateur clique simplement sur "Enregistrer", j'aimerais enregistrer la progression qu'il a faite dans la base de données pour qu'il puisse revenir et terminer plus tard. Existe-t-il un moyen d'ignorer les validations dans ce cas ?

En regardant autour de moi, il semble que la seule chose que je puisse faire soit d'énumérer chaque champ individuellement comme suit :

@obj.field1 = ...
@obj.field2 = ...
@obj.field3 = ...
...
@obj.save(:validate => false)

Est-ce vraiment le cas ? J'aurais peur d'ajouter un autre champ à un moment donné dans le futur et d'oublier de mettre à jour le contrôleur ici.

29voto

fl00r Points 41855
@obj.attributes = params[:obj]
@obj.save(false)

Mise à jour pour Rails 3

@obj.attributes = params[:obj]
@obj.save(:validate => false)

Prograide.com

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.

Powered by:

X