Rails的活动记录查询嵌套协会存在

问题描述:

我有ProductGuideDocument简单的模型,该模型是这样的:Rails的活动记录查询嵌套协会存在

Product有许多GuidesGuide有许多Documents

我在寻找的查询仅在包含文档时返回产品。

Product.joins(:guides).distinct给产品至少一个指南,但如何添加一个嵌套的级别?

Product.joins(guides: :documents).distinct 

假设你的模型已经建立了has_many协会,你的表名是标准的,应当生成查询:

SELECT DISTINCT "products".* FROM "products" 
INNER JOIN "guides" ON "guides"."product_id" = "products"."id" 
INNER JOIN "documents" ON "documents"."guides_id" = "guides"."id" 

(查询会根据SQL的味道你是使用;这是Postgres的。)