如何通过ruby / rails中的自定义方法对集合/枚举进行排序?

时间:2012-11-06 02:51:55

标签: ruby-on-rails ruby

在Rails中,让我有一系列类别:

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

其中一个类别的名称为“新”。我希望在集合中首先使用“新”类别,其余按字母顺序排列。

我只想做一个数据库查询。我希望这一点尽可能简洁。

如果没有一个查询限制,我知道我可以获取“新”类别,然后按名称顺序获取其余类别,然后将新类别“取消”移至@categories集合,但必须有更好的方法!

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我想我已经想出了一些相当不错的东西:

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

或者,甚至更好:

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

这给了我一个查询和集合中的“新”类别。