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

kidult · 2014年08月12日 · 最后由 kidult 回复于 2014年08月12日 · 1601 次阅读
_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)

需要 登录 后方可回复, 如果你还没有账号请 注册新账号