我必须道歉,因为我对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')
但不幸的是,这会引发错误。
答案 0 :(得分: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')