Lors de l'enregistrement de données à l'aide d'ActiveRecord, les données peuvent ne pas être enregistrées. C'est souvent glissant lors de la validation, alors gardez-le organisé.
article | Contenu |
---|---|
OS.Catalina | v10.15.4 |
Ruby | v2.5.1 |
Ruby On Rails | v5.2.4.3 |
Je n'ai pas beaucoup d'opportunités, mais quand il y a un service qui crée un utilisateur initial, par exemple.
app/lib/make_default_data_service.rb
1 default_user = User.new
2 default_user.update_attributes(
3 id: 1,
4 password: 1111,
5 name: 'Utilisateur non enregistré',
6 email: '[email protected]'
)
Lorsque j'exécute le service, aucune donnée n'est enregistrée. Quand j'enquête ...
User Exists (32.4ms) SELECT 1 AS one FROM `users` WHERE `users`.`email` = BINARY '[email protected]' LIMIT 1
↳ app/lib/make_default_data_service.rb:15
(0.5ms) ROLLBACK
J'étais en train d'enquêter jusqu'à la base de données, disant à tort "Les données utilisateur existent-elles déjà?" La deuxième ligne de la source ci-dessus a été modifiée.
(* Après réparation) app/lib/make_default_data_service.rb
1 default_user = User.new
2 default_user.update_attributes!(
3 id: 1,
4 password: 1111,
5 name: 'Utilisateur non enregistré',
6 email: '[email protected]'
)
Puis.
Il semble qu'il a violé la convention de numéro de caractère du mot de passe. C'est plus facile à comprendre. Vous pouvez le remplacer par la méthode save → save !. Le déploiement est un mauvais modèle, mais ... c'est tout.
Recommended Posts