2014-10-30 64 views
0

所以我有一個表列priority_n。假設該表中有5個項目。其中兩個優先級爲n,其餘三個優先級爲n。按兩列欄排序,但如果欄位爲零,則優先排列欄位?

所以我想做一個where(priority_n:nil).order(published_at::desc)與where.not(priority_n:nil).order(priority_n::asc)結合使用。因此,我希望在活動記錄關係開始的時候沒有記錄的關鍵字,然後是優先關鍵記錄關係。有沒有辦法做到這一點?

回答

0

我認爲這將這樣的伎倆:現在

class MyModel 

    scope :with_priority, -> { where.not(priority: nil).reorder(:priority) } 
    scope :without_priority, -> { where(priority: nil).reorder(published_at: :desc) } 

    def self.special_order 
    without_priority.to_a + with_priority.to_a 
    end 
end 

,您可以撥打:MyModel.special_order返回數組排序喜歡你問。