0

我必须道歉,因为我对 sql 比较陌生,而且我的请求似乎相对容易。

源代码:

class Garage < ActiveRecord::Base
  has_one :car
  scope :active, ...

class Car < ActiveRecord::Base
  has_many :drivers

一个车库是active指所属汽车至少有一名司机。

问题: :active范围必须归还所有拥有不止一名司机的汽车的车库。

我认为代码必须是这样的:

scope :active, joins(:car).where('cars.drivers.num > 0')

但不幸的是,这会引发错误。

4

1 回答 1

2

尝试这个:

scope :active, joins(:car => :drivers).where('COUNT(drivers.id) > 0')

我的错,上面的这个范围可能是错误的(WHERE 子句中的 COUNT ?!)

试试这个:

scope :active, joins(:car => :drivers).
               select('garages.*').
               group('garages.id').
               having('COUNT(drivers.*) > 0')
于 2013-08-05T13:43:33.920 回答