ruby-on-rails – 与Active Model Serializer相关的负载关联
发布时间:2020-12-16 20:12:02 所属栏目:百科 来源:网络整理
导读:背景 我有一个具有深度嵌套关联的rails应用程序. .- WorkPeriodTimecard - Week - Day --- Subtotal `- Adjustment- (has many) 我正在使用Active Model Serializer来构建API. 在客户端,我想加载一个时间卡,一次就是关联. 目前我的串行器看起来像这样, class
背景
我有一个具有深度嵌套关联的rails应用程序. .-< WorkPeriod Timecard -< Week -< Day -<--< Subtotal `-< Adjustment -< (has many) 我正在使用Active Model Serializer来构建API. 在客户端,我想加载一个时间卡,一次就是关联. 目前我的串行器看起来像这样, class TimecardSerializer < ActiveModel::Serializer embed :ids,include: true has_many :weeks end class WeekSerializer < ActiveModel::Serializer embed :ids,include: true has_many :days end # ... etc ... 问题 这一切都可以找到,除了没有什么是渴望的.所以它最终会为每个请求调用数据库.对于每周,它会对该周的日子单独提出申请.而对于每一天,它都是单独的请求,它的工作周期,小计和调整. 解决方法
一个解决方案是在TimecardSerializer上定义自己的周方法.从那里你可以包括()你想要加载的所有关联.
class TimecardSerializer < ActiveModel::Serializer embed :ids,include: true has_many :weeks def weeks object.weeks.includes(days: [:sub_totals,:work_periods,:adjustments]) end end 所有查询仍将显示在日志中,但大多数查询将是一个缓存的查询,而不是真实的查询. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读