考虑到以下情况:Company
has_many Users
要获得拥有3个用户的公司,这可以有效地运作:
Company.joins(:users).group("companies.id").having("COUNT(users.id)=3")
但是,获得拥有0个用户的公司(无)的最有效方法是什么?因为,显然,相同的方法不起作用(根据定义,joins
排除了拥有0个用户的公司):
Company.joins(:users).group("companies.id").having("COUNT(users.id)=0")
答案 0 :(得分:9)
执行LEFT JOIN而不是INNER JOIN。
Company.joins('LEFT OUTER JOIN users ON companies.id = users.company_id')