关于includes后遇到的N+1问题


之前有使用,eager_load preload 来减少N+1问题,

后来发现includes更好用,可以嵌套关联。像这样子:Inquiry.includes(:inquiry_manager,:contact,inquiry_items: :chemical)

今天关联一个表的时候发现死活还是遇到N+1问题,后来才发现,自己在关联类中定义了一个实例方法重写了sql。

def package_info
inquiry_items.pluck(:name,:package,:unit).join("").join(";")
end

这里的 inquiry_items.pluck 会重新再查找inquiry和inquiry_items的关系

修改方法,就是用循环来写:

def package_info
inquiry_items.each do | item|
#这样就不会再关联了。
end
end


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值