2012-11-06 17 views
2

在Rails,讓我有一個類的集合:如何通過ruby/rails中的自定義方法對集合/枚舉進行排序?

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

其中一個類別的名稱爲「新建」。我希望首先在該集合中有「新」類別,其餘按字母順序排列。

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

如果一個查詢限制沒有到位,我知道我可以獲取「New」類別,然後按名稱順序獲取其餘類別,然後將新類別「解除」到@類別收藏,但必須有更好的方法!

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

任何想法?

回答

1

我想我已經拿出一些相當不錯的:

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

,或者甚至更好:

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

這給了我一個查詢和「新」第一類集合中。

+1

是的,分區是這裏走的路,雖然不知道是否需要壓扁數組。 –

相關問題