在ActiveRecord_Relation结果中移动项目?

时间:2015-04-01 21:49:43

标签: ruby-on-rails rails-activerecord activerecord-relation

我希望能够以User.all作为第一个结果返回current_user,其余部分按user.name按字母顺序排序。

" Rails""" Rails"这样做的方法?我认为将ActiveRecord_Relation转换为数组然后使用.insert.delete_at的组合将目标用户从当前位置移动到前端。我想为此创建一个辅助方法吗?或者有一种完全不同的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

不是最多" railsy"方式,但这应该工作:

users  = User.all.append(User.find(current_user.id))
users = (users & users).reverse!

答案 1 :(得分:1)

在一个查询中:

users = User.where("id != ?", current_user.id).all.insert(0, User.find(current_user.id))

但是,请记住,围绕User.all查询构建您的网站几乎总是一个坏主意...在超过10,000名用户之后,您的应用程序将停止运行。无论您在何处进行此查询,都应对结果进行分页。