Problèmes de validation sur la mise à jour manuelle de la valeur de l’atsortingbut dans la console Rails

J’ai un problème simple Je veux changer une valeur de champ pour mon User.find(1) dans la console des rails.

J’ai essayé:

 u = User.find(1) u.update_atsortingbutes(roles_mask: 3) 

Et obtenu false rendu. Lorsque je vérifie u.errors.full_messages , je constate que c’est parce qu’il y a un problème avec la validation du mot de passe depuis has_secure_password . Comment puis-je le mettre à jour manuellement dans la console?

si vous voulez contourner la validation, utilisez

 # skip validations but run callbacks u.update_atsortingbute :roles_mask, 3 

ou

 # do the update on the sql so no validation and callback is executed u.update_column :roles_mask, 3 

Vous devez d’abord authentifier l’utilisateur, puis mettre à jour l’utilisateur

 u = User.find(1) u.authenticate("password") u.update_atsortingbutes(roles_mask: 3) 

Ou si vous voulez ignorer les validations que vous pouvez faire comme suit;

 u = User.find(1) u.update_atsortingbute :roles_mask, 3 

Vous pouvez essayer update_atsortingbute(:roles_mask, 3) ou update_column(:roles_mask, 3) .

Vous pouvez avoir quelque chose comme ça

 Post.find(1).comments.first.update(body: "hello") 

ou

 @u = Post.find(1) @u.comments.first.update(body: "hello") 

où comments est le nom de la table de commentaires, le corps est le nom de la colonne dans la table de commentaires.

Cela s’applique lorsque vous avez un atsortingbut nested

post.rb

 has_many: comments accept_nested_atsortingbutes_for: comment 

comment.rb

 belongs_to: post