我想写一个带条件的嵌套联接查询。
我现在的查询语句是:
Event.joins(:store => :retailer).where(store: {retailer: {id: 2}})
它会输出以下 SQL 语句:
SELECT "events".* FROM "events" INNER JOIN "stores" ON "stores"."id" = "events"."store_id" INNER JOIN "retailers" ON "retailers"."id" = "stores"."retailer_id" WHERE "store"."retailer_id" = '---
:id: 2
'
还有以下错误:
SQLite3::SQLException: no such column: store.retailer_id: SELECT "events".* FROM "events" INNER JOIN "stores" ON "stores"."id" = "events"."store_id" INNER JOIN "retailers" ON "retailers"."id" = "stores"."retailer_id" WHERE "store"."retailer_id" = '---
:id: 2
'
系统提示我没有列store.retailer_id,但是我可以运行以下查询并正常工作:
Event.first.store.retailer_id
Event Load (0.2ms) SELECT "events".* FROM "events" ORDER BY "events"."id" ASC LIMIT 1
Store Load (0.1ms) SELECT "stores".* FROM "stores" WHERE "stores"."id" = ? LIMIT 1 [["id", 28958]]
=> 4
:has_one
关系,在 where 子句中我仍需要将关联名称变成复数形式。你刚刚救了我的一命。 - stephenmurdochEvent.joins(:store).where("namespace_stores.retailer_id = ?", 2)
- alecvn