2

在 Rails 中,我有一个类别的集合:

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

这些类别之一的名称为“新”。我希望将“新”类别放在集合的首位,其余按字母顺序排列。

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

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

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

有任何想法吗?

4

1 回答 1

2

我想我想出了一些很好的东西:

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

或者,甚至更好:

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

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

于 2012-11-06T02:58:00.340 回答