【问题标题】:Order articles by date and by votes using acts_as_votable gem使用acts_as_votable gem 按日期和投票排序文章
【发布时间】:2015-09-22 21:54:17
【问题描述】:

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

我想让我的文章可以投票,这很有效。

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

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

假设今天发布了 Article 、 Article 和 Article 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

但是如何按两个标准进行排序:日期和赞成票?

【问题讨论】:

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


    【解决方案1】:

    在您引用的帖子中记录的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?

    【讨论】:

    • 只是一个更新:订单实际上应该是:order('cast(created_at as date) desc, cached_votes_up desc')
    猜你喜欢
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多