我有一个包含多个比赛和对象的设置。他们与has_many并列在一起:通过与contest_objs的安排。 contest_objs也有选票,所以我可以有几个比赛,包括几个对象。我有一个复杂的SQL设置来计算当前排名。但是,我需要在排序的SQL select语句中指定比赛。我很难做到这一点。这是我走到这一步:将变量插入复杂的sql命令
@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?
我已经试过了,它给我这个错误'ActiveRecord :: StatementInvalid(SQLite3 :: SQLException:无法识别的令牌:“#”' – Marc
你确定你使用双引号吗?不能使用单引号。 – Intrepidd
呵呵。有效。我一直认为单引号和双引号是可以互换的。有用! – Marc