使用Rails 5.1.1我有一個問題,在渲染JSON時會以某種方式「關注」關係數量。Rails 5.1 api渲染JSON倍增關係
有一個has_many/belongs_to關係,沒什麼奇特的。一個「用戶」有很多「代碼」。
檢查取之於PARAMS未來:
(byebug) user_params['codes_attributes'].count
2
檢查@user.update(user_params)
被稱爲後所保存:
(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
檢查什麼是as_json
輸出(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
我希望我是...但不幸的是我不是。我在'用戶#autosave_associated_records_for_codes'中有一些自定義代碼作爲'accepting_nested_attributes_for'的一部分...試圖弄清楚這是否有某種相關性。 – krsyoung
您沒有顯示'as_json'輸出 – Bartosz