2016-08-18 50 views
3

在rails應用程序中,我想按優先級排序任務,優先級的值爲p1,p2,p3,nil。如果我這樣排序rails每個訂單的零值

task..order(:priority).each do |t| 
    puts t 
end 

優先級爲零的任務先到達,然後其他事情按照順序排序。我想要沒有優先級的任務在循環中繼續。如何完成這一個?

我使用MySQL數據庫

+0

也許不設置優先級爲零,但使用這將是最高優先級的默認值? – Typpex

回答

1
Task.order('priority IS NULL, priority DESC') 
+0

適用於mysql,謝謝 – Navin

0

試試這個:

task = Task.order('priority DESC NULLS LAST') 
+0

它是否適用於所有數據庫? – Navin

+0

我確定POSTGRESQL,對其他人不太確定。 –

+0

只適用於PostgreSQL –

0

試試這個:

Task.order(priority: :desc) 
0

您可以使用CASE聲明

Task.order('CASE WHEN priority IS NULL THEN p99 ELSE priority END') 

變化p99這樣,這將是最後一次