簡體   English   中英

Rails中的“復雜”分組和索引編制?

[英]“Complex” grouping and indexing in rails?

我有一個似乎無法找到簡單解決方案的問題。

我要實現以下目標:
*我有一個任務列表,每個任務都有一個所有者和到期日
*我想顯示按所有者分組的所有任務的列表
*我想根據到期日對所有者進行排序:例如,到期日最低的所有者排在第一,其次是最低的所有者,依此類推
*我希望能夠對結果進行分頁,最好使用will_paginate

為了說明,這是我要尋找的結果:

掠奪
-任務1,截止日期1
-任務3,到期日4

-任務2,截止日期2
頌歌
-任務4,截止日期3

到目前為止,我可以查詢與任務的所有業主,在與他們的“最早到期日”的虛擬屬性進行排序,然后在視圖中顯示他們他們的任務。

imo這種方法存在多個問題:
*我從視圖中運行多個查詢(owner.tasks.each等)。 我總是了解到從視圖中運行查詢是不好的
*我正在通過將所有記錄加載到內存(虛擬屬性)中來進行排序,這對於大型記錄集可能會造成問題。 *我不知道該如何進行分頁,這將對顯示的任務數量敏感

我似乎無法破解,所以任何幫助或提示將不勝感激!
歐文

試試這個查詢,您沒有提供示例數據(理想情況下使用SQL),因此我們可以發揮自己的作用:

SELECT
u.id as owner_id, u.name as owner_name, t.id, t.due_date
FROM users u
INNER JOIN tasks m ON u.id = m.owner_id
INNER JOIN tasks t ON u.id = t.owner_id
GROUP BY u.id, u.name, t.id, t.due_date
ORDER BY MIN(m.due_date), t.due_date

您應該以正確的順序獲取所需的所有數據,並且只需對它應用LIMIT (或將其轉換為AR並將其提交給will_paginate)即可進行分頁。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM