我有这个按预期工作的查询:
@dog.listings.joins(:address_country).merge(Country.where(permalink: 'uk'))
此查询为我提供了国家与“英国”匹配的列表(列表 has_one :address_country,这是 Country 模型中的国家)
但是,当我在 cat 和列表(垃圾)之间的链中添加另一个关联时,它不起作用(垃圾属于列表,也属于猫):
@dog.litters.joins(:listing) & Listing.joins(:address_country) & Country.where(permalink: 'uk')
在此查询中,我希望它获取国家(相关列表的)匹配的 Litters。但它只返回一个空数组。第一个查询有效,我想我只需要将它固定到@cat.litters
?)
在 Rails C 中,我得到了这个:
d.litters.joins(:listing) & Listing.joins(:address_country).merge(Country.where(permalink: 'uk'))
Litter Load (0.6ms) SELECT "litters".* FROM "litters" INNER JOIN "listings" ON "listings"."id" = "litters"."listing_id" WHERE "litters"."litterable_id" = 11 AND "litters"."litterable_type" = 'Dog'
Listing Load (0.4ms) SELECT "listings".* FROM "listings" INNER JOIN "countries" ON "countries"."id" = "listings"."address_country_id" WHERE "countries"."permalink" = 'uk'
=> []
任何想法我做错了什么?