获取mysql中的条目的等级

时间:2012-04-16 02:24:38

标签: mysql ruby-on-rails

我正在尝试根据当前收到的投票数得到一个活跃记录对象的排名。在我的对象模型中,我有一个方法'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>投票的一部分。我需要替换'>投票',一些参考自己。不确定这是否清楚。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我猜你的意思是,你如何将self.votes从rails传递给SQL查询?

你可以这样做:

Object.where("votes > ?",self.votes)

所以要将self.votes传递给您的查询:

Object.select('id, votes, (SELECT COUNT(DISTINCT "objects"."id") 
FROM "objects" 
WHERE "objects"."votes" > ?) AS rank',self.votes).limit(10)