通过一组值对ActiveRecord集合进行排序

时间:2019-03-17 05:34:35

标签: ruby-on-rails activerecord

说我有一个名为Team的模型和一个名为Member的模型。

# Team
has_many :members
has_many :member_roles

# leaders are also members derived thru some association
has_many :leaders,
-> { leadership },
through  :member_roles,
class_name: "Member"

# MemberRole
belongs_to :team
belongs_to :member

scope :leadership,
  -> { where(role: "Leader") }

我想让所有成员首先由领导者排序,但是在数据库级别,这样我就可以像在其他任何查询上一样使分页gem发挥作用。

我无法做到这一点,而又不会引起或分解为多个DB调用,这会打断分页。我一直希望有类似但没有成功的事情。

Team.find(1).members.order("id = Team.find(1).leaders.pluck(:id)' DESC")

是否有可能实现我想要的在单个DB调用中将某些记录放置在集合前面的记录?

我正在使用Postgres FWIW在Rails 5.2上

0 个答案:

没有答案