2014-09-05 152 views
0

我需要分頁2個不同的模型。那我現在用的:Kaminari paginate數組。如何處理大量數據?

activity_logs = ActivityLog.for_user(@user.id) 
        .group('activity_id').not_anonymous.recent 

replies = @user.posts.recently_created 

@activity_logs = Kaminari.paginate_array(activity_logs + replies) 
        .page(params[:page]).per(20) 

但是它不顯示回覆,因爲有很多ActivityLog的記錄。那麼我能在這裏做什麼?

+0

你想要什麼結果?看起來好像你想要在每個頁面上顯示多於0個回覆,並且看起來你希望它們出現在ActivityLogs之後。你想顯示所有的回覆?如果有超過20個回覆呢?或者你想限制答覆的數量,所以ActivityLogs總是有空間的?如果沒有任何ActivityLogs會怎麼樣?我們需要更多信息。 – 2014-09-05 19:09:28

+0

假設我有1000個ActivityLogs和1000個回覆。我需要將它們顯示在創作時間排序的一頁上。例如1. ActivityLog [18:18:18] 2.Reeply [18:18:00]等 – Meliborn 2014-09-05 19:13:35

回答

0

Kaminari不知道按創建日期排序你的兩個數組。你需要自己做。像...

paginatable_array = (activity_logs + replies).sort_by(&:created_at) 
@activity_logs = Kaminari.paginate_array(paginatable_array).page(params[:page]).per(20) 

是的,paginatable_array是一個可怕的選擇名稱。 :)

+0

我試過了,但是如果有很多記錄需要花費很多時間來組合和排序 – Meliborn 2014-09-05 19:22:30

+0

對2000條記錄進行排序不需要那麼長時間。無論如何,你有多少數據?您的其他選項是限制您在初始兩個查詢中返回的數據量,以減少所需的排序量。 – 2014-09-05 19:30:51

+0

幾百萬。如果我減少返回的數據,那麼在這種情況下如何顯示它們? – Meliborn 2014-09-05 19:32:59