我正在尝试在我的应用中创建评分系统。我决定使用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?
感谢任何帮助。
答案 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?