按模型与特定属性的关联计数

Con*_*orB 2 ruby postgresql activerecord ruby-on-rails

说我有两个型号Users,并Appointments在用户的has_many约会.

约会可以有两种不同的类型:typeAtypeB.

如何编写查询以按照他们的typeB 约会数量对用户进行排序?

我查看了counter_cache,但似乎只计算了关联的数量(因此在这种情况下是用户可以拥有的约会数),并且不允许计算特定类型的约会.

And*_*eko 7

使用joins(INNER JOIN),您将只获得至少有一个约会关联的用户:

User.joins(:appointments)
    .where(appointments: { type: 'typeB' })
    .group('users.id')
    .order('count(appointments.id) DESC')
Run Code Online (Sandbox Code Playgroud)

如果您使用includes(LEFT OUTER JOIN),您将获得列表'typeB'末尾没有约会的所有用户的列表.