使用acts_as_votable gem按日期和投票订购文章

时间:2015-09-22 21:54:18

标签: ruby-on-rails sorting ruby-on-rails-4 gem

我正在尝试在我的应用中创建评分系统。我决定使用acs_as_votable gem,因为它似乎是一个功能强大且流行的宝石,提供投票功能。

我想让我的文章成为可投票的,这是有效的。

但是,我想根据发布日期对文章进行排序,然后按照赞成票数对同一天发布的文章进行排序。

我认为问题很清楚,但让我举例说明。

我们今天发表文章,文章和第3条,他们分别有5个,3个,10个赞成票。

第4条,第5条和第6条是昨天发布的文章,分别有1,2和3个赞成票。

排序的文章应该看起来像

RequestBody body = RequestBody.create(TEXT, data);
Request request = new Request.Builder()
        .url(url)
        .post(body)
        .build();
Response response = getHttpClient().newCall(request).execute();

理想情况下,我想在同一天发布所有文章之前提取日期(类似于产品搜索),所以它会像这样,但这是可选的。

Article 3 (10 upvotes)
Article 1 (5 upvotes)
Article 2 (3 upvotes)
Article 6 (3 upvotes)
Article 5 (2 upvotes)
Article 4 (1 upvote)

这里解决了upvotes的简单排序: acts_as_votable ordering by upvotes

但我如何按两个标准排序:date和upvote?

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

在您引用的帖子上记录的acts_as_votable上实施缓存后,您应该可以执行以下操作:

Article.order(cached_votes_total: :desc, published_at: :desc)

Rails会为你做到这一点。我觉得此帖有用:Ruby on Rails: how do I sort with two columns using ActiveRecord?

相关问题