2

3 つのモデルがあるとします。

Class Garage
  has_many :drivers
end

Class Driver
  belongs_to :garage
  has_many :cars
end

Class Car
  belongs_to :driver
end

それはすべて良いことです。

モデルに新しいキーを追加せずに直接実行できるように、とhas_manyの間に関連付けを追加したい場合はどうすればよいでしょうか?GarageCargarage.carsgarage_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 に答える