簡體   English   中英

如何在ruby / rails中通過自定義方法對集合/枚舉進行排序?

[英]How do I sort a collection / enum by a custom method in ruby/rails?

在Rails中,我們有一個類別集合:

@categories = Category.order('name asc')

這些類別之一具有名稱“ New”。 我想將“新”類別放在集合的首位,其余部分按字母順序排列。

我只想做一個數據庫查詢。 我希望這盡可能簡潔。

如果沒有一個查詢限制,我知道我可以獲取“ New”類別,然后按名稱順序獲取其余類別,然后將新類別“ unshift”到@categories集合,但是在那里一定是更好的方法!

@new = Category.where(name: 'name').first
@categories = Category.where("name != ?", 'Name').order('name asc')
@categories.unshift(@new)

有任何想法嗎?

我想我已經提出了一些相當不錯的東西:

@categories = Category.order('name asc').partition { |cat| cat.name == 'New' }

或者,甚至更好:

@categories = Category.order('name asc').partition { |cat| cat.name == 'New' }.flatten

這給了我一個查詢,並在集合中排在第一位。

暫無
暫無

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

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