Rails的活动记录查询嵌套协会存在
问题描述:
我有Product
,Guide
和Document
简单的模型,该模型是这样的:Rails的活动记录查询嵌套协会存在
Product
有许多Guides
和Guide
有许多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的。)