假設我有兩個類:用戶和任務。任務屬於用戶並且具有優先級(其是1到3之間的整數,或零)。在Rails中,我如何按任務優先級排序用戶
class User < ActiveRecord::Base
has_many :tasks
class Task < ActiveRecord::Base
belongs_to :user
attr_accessible :priority # Integer between 1 and 3, or nil
我想(通過高優先級排序第一,然後再中低則未評估)用戶呈現的TOP 10的任務次數最多和最高的優先級。我想到了一種不同的方式,但我找不到一個乾淨的方式來處理這個問題。
我首先想到使用控制器的方法的複雜SQL請求限制性能:
User.joins(:tasks).count(:all, :group => ["tasks.user_id", "priority"])
然而結果是不容易的排序,我終於有機會使用兩個循環進行排序和另一個呈現用戶。此外,我認爲這種方法在模型中更合乎邏輯。
您認爲如何?處理這個問題的最簡潔的方法是什麼?
太棒了,我雖然錯過了一個rails查詢函數,但沒有它只有SQL。謝謝 ! – Nibbler