Version Rails: Rails 5.1.1Pourquoi update_attributes ne met pas à jour un attribut, mais la mise à jour le fait?
Ruby Version: rubis 2.4.0 [x86_64]
Serveur local:
Puma starting in single mode...
* Version 3.9.1 (ruby 2.4.0-p0), codename: Private Caller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
je un existant modèle appelé User
et plus tard j'ai ajouté l'attribut last_name
.
Puis, en essayant de mettre à jour le nouveau champ (last_name) avec d'autres domaines, je:
user.update_attributes(first_name: 'praaveen', last_name:'vr')
Pour update_attributes
, cela met à jour first_name
mais pas l'attribut last_name
:
rails log:
UPDATE "users" SET "updated_at" = $1, "first_name" = $2 WHERE "users"."id" = $3 [["updated_at", "2017-09-20 14:19:26.174311"], ["first_name", "praaveen"], ["id", 156]]
J'ai ensuite essayé avec:
user.update(first_name: 'praaveen', last_name:'vr')
user.update_columns(first_name: 'praaveen', last_name:'vr')
Ces méthodes mettent à jour first_name
etlast_name
comme prévu.
rails connecter:
UPDATE "users" SET "updated_at" = $1, "first_name" = $2, "last_name" = $3 WHERE "users"."id" = $4 [["updated_at", "2017-09-20 14:15:23.623292"], ["first_name", "praaveen"], ["last_name", "vr"], ["id", 156]]
Toute idée de ce qui se passe? Ajout de quelques observations
a. Il met à jour au hasard comme une fois dans 10 ou 15 fois la mise à jour.
b. Un problème avec le multi-threading puma?
C'est étrange puisque [ 'update_attributes' est juste un' 'alias' de update'] (https://github.com/rails /rails/blob/5-1-stable/activerecord/lib/active_record/persistence.rb#L289) avez-vous quelque chose de suspect dans le modèle, qui pourrait avoir redéfini cette méthode ou quelque chose? –
@SimpleLime Je n'en ai aucune comme attr_accessible define dans mon modèle User. – praaveen
@praaveen est-ce que 'update_attributes' est écrasé quelque part? Pouvez-vous essayer d'appeler 'Utilisateur. reset_column_information' juste avant l'instruction 'update_attributes' (uniquement à des fins de test)? – ulferts