Rails组/拥有/计数查询

Tom*_*ogg 10 sql activerecord ruby-on-rails

鉴于如下情况:Companyhas_manyUsers

要获得拥有3个用户的公司,这可以有效地运作:

Company.joins(:users).group("companies.id").having("COUNT(users.id)=3")
Run Code Online (Sandbox Code Playgroud)

但是,获得拥有0个用户的公司(无)的最有效方法是什么?因为,显然,同样的方法不起作用(根据joins定义,不包括有0个用户的公司):

Company.joins(:users).group("companies.id").having("COUNT(users.id)=0")
Run Code Online (Sandbox Code Playgroud)

Len*_*ran 9

执行LEFT JOIN而不是INNER JOIN.

Company.joins('LEFT OUTER JOIN users ON companies.id = users.company_id')
Run Code Online (Sandbox Code Playgroud)