使用 acts_as_votable gem 按日期和投票排序文章
Order articles by date and by votes using acts_as_votable gem
我正在尝试在我的应用程序中创建评级系统。我决定使用 acs_as_votable gem,因为它似乎是一个功能强大且流行的 gem,提供投票功能。
我想让我的文章可以投票,这很有效。
但是我想按发表日期排序文章,然后将当天发表的文章按点赞数排序。
我觉得问题很清楚了,还是举个例子吧。
假设第 1 条、第 3 条和第 3 条是今天发布的,它们分别有 5、3、10 个赞成票。
第4条、第5条和第6条是昨天发表的文章,分别有1,2和3个赞。
排序后的文章应该看起来像
Article 3 (10 upvotes)
Article 1 (5 upvotes)
Article 2 (3 upvotes)
Article 6 (3 upvotes)
Article 5 (2 upvotes)
Article 4 (1 upvote)
理想情况下,我想提取同一天发布的所有文章之前的日期(类似于 producthunt 上的内容),因此它会像这样,但这是可选的。
**9/22/2015**
Article 3 (10 upvotes)
Article 1 (5 upvotes)
Article 2 (3 upvotes)
**9/21/2015**
Article 6 (3 upvotes)
Article 5 (2 upvotes)
Article 4 (1 upvote)
这里解决了简单的点赞排序:
acts_as_votable ordering by upvotes
但是我如何按两个标准排序:日期和赞成票?
按照您引用的帖子中的说明在 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?
我正在尝试在我的应用程序中创建评级系统。我决定使用 acs_as_votable gem,因为它似乎是一个功能强大且流行的 gem,提供投票功能。
我想让我的文章可以投票,这很有效。
但是我想按发表日期排序文章,然后将当天发表的文章按点赞数排序。
我觉得问题很清楚了,还是举个例子吧。
假设第 1 条、第 3 条和第 3 条是今天发布的,它们分别有 5、3、10 个赞成票。
第4条、第5条和第6条是昨天发表的文章,分别有1,2和3个赞。
排序后的文章应该看起来像
Article 3 (10 upvotes)
Article 1 (5 upvotes)
Article 2 (3 upvotes)
Article 6 (3 upvotes)
Article 5 (2 upvotes)
Article 4 (1 upvote)
理想情况下,我想提取同一天发布的所有文章之前的日期(类似于 producthunt 上的内容),因此它会像这样,但这是可选的。
**9/22/2015**
Article 3 (10 upvotes)
Article 1 (5 upvotes)
Article 2 (3 upvotes)
**9/21/2015**
Article 6 (3 upvotes)
Article 5 (2 upvotes)
Article 4 (1 upvote)
这里解决了简单的点赞排序: acts_as_votable ordering by upvotes
但是我如何按两个标准排序:日期和赞成票?
按照您引用的帖子中的说明在 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?