新手问题 关联对象查询优化

kidult · August 12, 2014 · Last by kidult replied at August 12, 2014 · 1645 hits
_weisite = Weisite.find_by(user: current_user)
_weimembers = Weimember.where(weisite: _weisite)
@weishoporders = Weishoporder.where(weimember_id: _weimembers).order("created_at desc")

这样可以把一个站点的订单都查询出来

但是生成的 SQL 语句为:

SELECT "weishoporders".* FROM "weishoporders" WHERE "weishoporders"."weimember_id" IN (SELECT "weimembers"."id" FROM "weimembers" WHERE "weimembers"."weisite_id" = 3) ORDER BY created_at desc

有更好的查询方式吗?

在 weishoporders 里面保存 weisite_id,直接查

#1 楼 @Rei 感谢,这是最好的一种方法,但如果一定要关联查询,那怎么实现比较好

Weishoporder.joins(weimember: :weisite).where('weisites.user_id = ?', current_user.id)

You need to Sign in before reply, if you don't have an account, please Sign up first.