我想通过has_and_belongs_to_many关系从我的商店中选择最新的4次交易,而IM会遇到此错误:
表"商店"有一个条目,但不能从中引用 查询的这一部分
class Deal < ActiveRecord::Base
has_and_belongs_to_many :stores
end
class Store < ActiveRecord::Base
has_and_belongs_to_many :deals
end
我的查询
SELECT * FROM (SELECT stores.id AS store_id, deals.*,
dense_rank() OVER (
PARTITION BY deals.stores.id
ORDER BY deals.created_at DESC
) AS deal_rank
FROM "deals"
INNER JOIN "listings"
ON "listings"."deal_id" = "deals"."id"
INNER JOIN "images"
ON "images"."id" = "deals"."image_id"
INNER JOIN "deals_stores"
ON "deals_stores"."deal_id" = "deals"."id"
INNER JOIN "stores"
ON "stores"."id" = "deals_stores"."store_id"
ORDER BY deals.created_at desc)
AS ranked_deals
WHERE (deal_rank <= 4)
定义habtm关系时,您应该更喜欢复数版本。
您需要更改
has_and_belongs_to_many :store
to
has_and_belongs_to_many :stores