2015-09-22 104 views
1

我正在嘗試在我的應用中創建評分系統。我決定使用acs_as_votable gem,因爲它似乎是提供投票功能的強大而流行的創業板。使用acts_as_votable按日期訂購文章並通過票進行訂購gem

我想使我的文章可投票,並且工作。

但是,我想根據發佈日期對文章進行排序,然後根據upvotes的數量對同一天發佈的文章進行排序。

我認爲這個問題很清楚,但讓我以身作則。

假設文章,文章和第3條今天出版,他們分別有5,3,10個upvotes。

第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) 

通過upvotes簡單的排序是在這裏解決: acts_as_votable ordering by upvotes

但是如何通過兩個標準做我排序:日期和給予好評?

任何幫助表示讚賞。

回答

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?

+0

只是一個更新: 順序實際上應該是: 順序(「投(created_at如日期)遞減,cached_votes_up降序」) – idjuradj