我正在尝试根据当前收到的投票数来获取 activerecord 对象的排名。在我的对象模型中,我有一个方法“rank”定义为:
Object.count(:conditions => ['votes > (?)', self.votes], :distinct => true) + 1
这将返回排名。但是,在我的程序的其他地方,我发现我实际上需要在 mysql 查询本身中获取它。我想尝试做如下的事情:
Object.select('id, votes, (SELECT COUNT(DISTINCT "objects"."id")
FROM "objects"
WHERE "objects"."votes" > votes) AS rank').limit(10)
但是,我不知道如何执行“objects.votes > votes”部分。我需要用一些对自身的引用来替换“>投票”。不确定这是否清楚。有任何想法吗?