我有一个包含多个竞赛和对象的设置。它们通过has_many :through 与contest_objs 的安排联系在一起。match_objs 也有投票,所以我可以有几个比赛,包括几个对象。我有一个复杂的 SQL 设置来计算当前排名。但是,我需要在 SQL select 语句中为排名指定比赛。我很难做到这一点。这是我到目前为止得到的:
@objects = @contest.objects.select('"contest_objs"."votes" AS v, name, "objects"."id" AS id,
(SELECT COUNT(DISTINCT "oi"."object_id")
FROM contest_objs oi
WHERE ("oi"."votes") > ("contest_objs"."votes"))+1 AS vrank')
在选择 vrank 时有什么方法可以指定 WHERE 还包括 "oi"."contest_id" = @contest.id 吗?