Avec Rails 5.1.1 J'ai un problème où le rendu JSON est en quelque sorte "doubler" le nombre de relations.Rails 5.1 api render json doubler les relations
Il existe une relation has_many/belongs_to, rien d'extraordinaire. Un "utilisateur" a beaucoup de "codes". Parcourant la méthode users_controller#update
je vois ce qui suit:
Vérifiez ce qui est à venir dans des params:
(byebug) user_params['codes_attributes'].count
2
Vérifiez ce qui est enregistré après @user.update(user_params)
a été appelé:
(byebug) @user.codes.count
(0.4ms) SELECT COUNT(*) FROM "codes" WHERE "codes"."user_id" = ? [["user_id", 85]]
2
Enfin, un droit as_json
double également via la relation:
(byebug) @user.codes.as_json.count
4
Vérifiez ce qui est sortie de as_json
(to_json
est le même):
(byebug) @user.as_json(include: [:friend, :codes])['codes'].count
4
(byebug) @user.codes.count
(0.3ms) SELECT COUNT(*) FROM "codes" WHERE "codes"."user_id" = ? [["user_id", 85]]
2
Et ici, nous pouvons voir que en quelque sorte le nombre de relations magie doublé! Des idées?
MISE À JOUR
je faisais l'utilisation d'une fonction personnalisée pour sauver les associations (autosave_associated_records_for_codes) qui semble avoir introduit le problème. Je l'ai commenté pour le moment mais j'essaierai de revoir pourquoi exactement cela doublait les choses. Une fois que je découvrirai la cause exacte répondra avec une solution.
ne vous faites quelque chose de bizarre dans la méthode 'as_json' de votre modèle' recueil HSC? – fanta
J'aimerais être ... mais malheureusement je ne le suis pas. J'ai un code personnalisé dans 'Utilisateur # autosave_associated_records_for_codes' dans le cadre de' accept_nested_attributes_for' ... essayant de comprendre si cela est en quelque sorte lié. – krsyoung
Vous n'avez pas montré la sortie 'as_json' – Bartosz