说我有一个名为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上