我將數據從4個不同來源提取到數據庫中,當它們保存時,它們將通過導軌分配到created_at
。Rails - Randomise記錄,但按日期保留訂單
當我顯示數據時,我想先顯示最新的記錄,所以我使用下面的代碼來獲取記錄created_at desc
和藉助寶石kaminari
記錄通過分頁顯示。
@stats = Stats.page(params[:page]).order('created_at desc').per(10)
我用這種方法所面臨的問題是,不是所有的來源獲取,例如等於曝光以來source A
數據得到了拉出第一,然後source B
數據得到了在同一天第二拉昇,在網站上源A的所有記錄將首先顯示,然後將顯示源B的所有記錄。
所以我的問題是,我怎樣才能按日期顯示記錄,並隨機化該日期的記錄,所以所有的來源可以得到相同的曝光。有沒有一個可以幫助解決這個問題的構建欄功能?如果不是,那麼實現我所期望的結果的最佳方式是什麼?事情是這樣的
Date (August 29th)
Record 1 - (Belonging to Source A)
Record 2 - (Belonging to Source E)
Record 3 - (Belonging to Source D)
Record 4 - (Belonging to Source B)
Record 5 - (Belonging to Source E)
Record 6 - (Belonging to Source D)
Record 7 - (Belonging to Source A)
Date (August 28th)
Record 1 - (Belonging to Source E)
Record 2 - (Belonging to Source D)
Record 3 - (Belonging to Source A)
Record 4 - (Belonging to Source B)
Record 5 - (Belonging to Source A)
Record 6 - (Belonging to Source D)
Record 7 - (Belonging to Source A)
...
...
...
這些記錄顯示最近6個月
由於記錄數量相對較少,因此可以使用['Array#shuffle'](https://ruby-doc.org/core/Array.html#method-i-shuffle)。 – mudasobwa
不會按日期打破訂單嗎?每個源有超過20條記錄,涉及4個源,數據每天提取,最近6個月顯示,因此數據非常龐大。 – Saadia
無法對來自不同來源的數據進行奇蹟分類。如果你想保存一個日期/時間順序,把所有東西加入到一個數組中,並使用['Array#sort'](https://ruby-doc.org/core/Array.html#method-i-sort)。 – mudasobwa