Rails 5.1.1では、JSONのレンダリングで何らかの関係が倍増するという問題があります。Rails 5.1 apiレンダリングjsonの倍増関係
has_many/belongs_to関係がありますが、気になることはありません。 「ユーザ」には多くの「コード」があります。
のparamsから来ているものを確認します:@user.update(user_params)
が呼び出された後に保存されているもの
(byebug) user_params['codes_attributes'].count
2
チェック:
(byebug) @user.codes.count
(0.4ms) SELECT COUNT(*) FROM "codes" WHERE "codes"."user_id" = ? [["user_id", 85]]
2
最後に、まっすぐに私は以下を参照してくださいusers_controller#update
方法のステップ実行as_json
も同様の関係で倍増します。
(byebug) @user.codes.as_json.count
4
から出力されたものを10
チェック(to_json
は同じです):
(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
そしてここで、我々は関係の何とか数は魔法のように倍増していることがわかります!何か案は?
UPDATE
私は問題を紹介しているようだ協会(autosave_associated_records_for_codes)を保存するためのカスタム機能を利用しました。私は今のところそれをコメントしましたが、正確にそれが倍増していた理由を再検討しようとします。正確な原因が解決策で返信されることがわかったら
はあなた 'Code'モデルの' as_json'方法で奇妙な何かをやっていないんですか? – fanta
私は元気だったと思いますが、残念ながら私はそうではありません。 'accepts_nested_attributes_for'の一環として' User#autosave_associated_records_for_codes'にカスタムコードをいくつか持っています...どうか関係があるかどうか調べようとしています。 – krsyoung
あなたは 'as_json'の出力を表示していません – Bartosz