Rails 3按最近流行的方式对提交内容进行排序

时间:2011-05-15 22:39:52

标签: ruby-on-rails activerecord sql-order-by

我有一个网站,其中包含用户可以投票的用户提交内容。我希望能够以各种方式在我的主页上组织这些提交,但最复杂的是“当前流行”。我认为最好的解决方法是命名范围,但我不确定该怎么做。

每次提交都有以下属性:votes_up:integervotes_down:integer

我认为最好的方法是在最后一天找到votes_up / (votes_up + votes_down)的比例。我还有一个投票模型:submission_id, vote_type ("up" or "down"), and user_id。显然,提交和投票都有created_at:datetimes我认为如果返回过去1天内投票数量较多的结果,而不是过去1天提交的投票会更好(这样做会提交收集蒸汽的时间仍然有资格)

如何构建一个将按此顺序返回提交日期限制的查询?

这有意义吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

我建议使用vote_fu并查看最近的业力是否满足您的需求?

答案 1 :(得分:1)

受欢迎的人?使用a / a + b,当你只有少量选票时,你会得到很多噪音,当你有一个有争议的主题时,投票根本不会反映材料的质量。人们偏袒政党,不良观点的人倾向于投票过多。

理论上理想的解决方法是突出显示用户通常同意支持的内容并隐藏他们不同意的人的内容。特殊列表可能是最具争议的主题。这种方法可能是资源密集型的,我不知道Ruby on Rails如何进行数据库优化。