想象一下你有三个模型
Class Garage
has_many :drivers
end
Class Driver
belongs_to :garage
has_many :cars
end
Class Car
belongs_to :driver
end
这都很好。
现在,如果我想在 andhas_many
之间添加一个关联Garage
,Car
这样我就可以直接执行garage.cars
而不向模型添加新garage_id
键Car
怎么办?
我目前正在使用模型cars
中定义的函数Garage
:
def cars
drivers.map{ |driver| driver.cars }.flatten
end
但这并不令人满意,因为此函数返回一个数组而不是代理,因此我不能在返回的汽车上使用命名范围。另外,它在查询方面是次优的。
感谢您的帮助。