我希望能够返回User.all
与current_user
作为第一个结果,其余的按字母顺序排序user.name
。在ActiveRecord_Relation结果中移动项目?
什么是“Rails”的方式来做到这一点?我认为这是将ActiveRecord_Relation转换为数组,然后使用.insert
和.delete_at
的组合将目标用户从其当前位置移动到前端。我想为此创建一个辅助方法吗?还是有一个完全不同的方法?
谢谢!
我希望能够返回User.all
与current_user
作为第一个结果,其余的按字母顺序排序user.name
。在ActiveRecord_Relation结果中移动项目?
什么是“Rails”的方式来做到这一点?我认为这是将ActiveRecord_Relation转换为数组,然后使用.insert
和.delete_at
的组合将目标用户从其当前位置移动到前端。我想为此创建一个辅助方法吗?还是有一个完全不同的方法?
谢谢!
不是最 “railsy” 的方式,但这应该工作:
users = User.all.append(User.find(current_user.id))
users = (users & users).reverse!
你可以使用“prepend”而不是“append”来避免“reverse”:-) – Hugo 2017-05-09 16:27:23
在一个查询:
users = User.where("id != ?", current_user.id).all.insert(0, User.find(current_user.id))
但是,请记住,它几乎总是一个坏主意打造您的网站在User.all
左右的查询...在超过10,000个用户后,您的应用程序将停止响应。无论你在做什么,都应该对结果进行分页。
需要问的问题:你试图用这个来达到什么目的? – BroiSatse 2015-04-01 22:06:49
@BroiSatse我想要列表顶部的当前用户的所有用户的选择下拉列表... – 2015-04-02 00:04:59
我会问“为什么?”但如何填充字段和ajax调用呢?他们键入时会搜索用户名。或者,也许某种延迟加载会起作用。但我很好奇你为什么要这样做。这是一个管理页面吗? – Jeff 2015-04-02 11:53:58