在Rails中,让我有一系列类别:
@categories = Category.order('name asc')
其中一个类别的名称为“新”。我希望在集合中首先使用“新”类别,其余按字母顺序排列。
我只想做一个数据库查询。我希望这一点尽可能简洁。
如果没有一个查询限制,我知道我可以获取“新”类别,然后按名称顺序获取其余类别,然后将新类别“取消”移至@categories集合,但必须有更好的方法!
@new = Category.where(name: 'name').first
@categories = Category.where("name != ?", 'Name').order('name asc')
@categories.unshift(@new)
有什么想法吗?
答案 0 :(得分:1)
我想我已经想出了一些相当不错的东西:
@categories = Category.order('name asc').partition { |cat| cat.name == 'New' }
或者,甚至更好:
@categories = Category.order('name asc').partition { |cat| cat.name == 'New' }.flatten
这给了我一个查询和集合中的“新”类别。