2

想象一下你有三个模型

Class Garage
  has_many :drivers
end

Class Driver
  belongs_to :garage
  has_many :cars
end

Class Car
  belongs_to :driver
end

这都很好。

现在,如果我想在 andhas_many之间添加一个关联GarageCar这样我就可以直接执行garage.cars而不向模型添加新garage_idCar怎么办?

我目前正在使用模型cars中定义的函数Garage

def cars
  drivers.map{ |driver| driver.cars }.flatten
end

但这并不令人满意,因为此函数返回一个数组而不是代理,因此我不能在返回的汽车上使用命名范围。另外,它在查询方面是次优的。

感谢您的帮助。

4

1 回答 1

3
class Garage
  has_many :drivers
  has_many :cars, :through => :drivers
end

记录在这里

于 2012-11-18T20:22:13.430 回答