使用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