期待どおりに機能するこのクエリがあります。
@dog.listings.joins(:address_country).merge(Country.where(permalink: 'uk'))
このクエリにより、国が「uk」と一致するリストが表示されます(リストhas_one:address_country、これは国モデルの国です)
しかし、猫とリスト(ごみ)の間のチェーンに別の関連付けを追加すると、機能しません(ごみはリストと猫に属します):
@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'
=> []
私が間違っていることについて何か考えはありますか?