【发布时间】:2009-09-13 01:27:04
【问题描述】:
我的votes 表如下所示:
id: integer
vote: boolean
voteable_id: integer
voteable_type: string
voter_id: integer
voter_type: string
vote 列确定该行是代表“赞成票”(vote = true) 还是“反对票”(vote = false)。
voteable_type是被投票事物的类别,voteable_id是被投票事物的id,voter_type是投票者的类别,voter_id是投票者的id。
我需要的是一个查询,以按 “投票得分” 降序排列获得前 n posts,其中“投票得分”定义为(帖子的赞成票数)-(帖子的反对票数)。
如果您的解决方案不需要我求助于find_by_sql()(我在 Rails 中工作),则可以加分
如果您的解决方案在 SQLite 和 PostgreSQL 中以相同的方式工作,则会获得更多奖励积分(尽管更重要的是它在 PostgreSQL 中工作)。
【问题讨论】:
-
如果您将其存储为 1/-1 而不是 true/false,也会让您的生活更轻松。
标签: sql ruby-on-rails postgresql