我在Ruby on Rails中遇到了一个棘手的查询问题。设置是:
我想执行搜索,返回符合某些搜索条件的所有用户,但优先考虑联系人,以便首先返回这些搜索条件。我的查询使用limit和offset来选择用户的子集,因此我需要在SQL查询中执行此操作,而不是在返回对象后对记录进行排序。
我正在尝试做这样的事情:
@users = User.limit(@limit).offset(@offset)
# Some search code...
@users = @users.where(....)
# Find the current user's contacts' IDs
contact_ids = current_user.contacts.collect{|a| a.friend_id}
# Order the results such that contacts are first
@users = @users.order( some function to prioritise records in the contact_ids list over the others )
# Return the query
render json: @users.all
非常感谢
答案 0 :(得分:0)
您可以使用order_by
来实现此目的,假设favorited
是Contact
模型上的二进制或整数字段:
@users = @users.order_by('favorited DESC')
注意: DESC
代表“降序”。这通常适用于二进制字段,因为true
将取值为1,false
取值为0.如果您需要按升序排序(最小)到最大),您可以使用ASC
代替DESC
。