0

さて、私は1つのモデル(ModelAと呼びます)から2番目のモデル(ModelB)、3番目のモデル(ModelC)への関連付けを処理する方法を知っています。しかし、3番目のもの(ModelC)が4番目のもの(ModelD)を介して5番目のもの(ModelE)に関連付けられている場合はどうなりますか。

#ModelA 
has_many :model_bs
has_many :model_cs, :trough => :model_bs

#ModelC
has_many :model_ds
has_many :model_es, :trough => model_ds

問題は、そのチェーンを介して特定のModelAレコードに関連付けられたModelEレコードのコレクションを取得するにはどうすればよいですか?

4

1 に答える 1

2

model_csのインスタンスを呼び出すとModelA、の配列が返されますmodel_cs。次に、すべてにアクセスしたい場合はmodel_es、の配列を反復処理し、model_csそれらの結果を配列またはハッシュに追加する必要があります。

array1 = @model_a.model_cs.all
array2 = []
array1.each do |x|
  array2 << x.model_es
end

array2model_esこれで、最終的な親が元のすべてのが含まれますmodel_a

于 2012-03-19T13:53:58.560 に答える