2016-06-30 7 views
0

のコレクションから関係を通じてhas_manyの内のすべてのレコードを取得します。このモデルを考えると、レコード

ModelOne.where(<some condition>).model_threes 

ModelOne 
    has_many: ModelTwo 
    has_many: ModelThree through: ModelTwo 

ModelTwo 
    belongs_to: ModelOne 
    has_many: ModelThree 

ModelThree 
    belongs_to: ModelTwo 

私のようなModelOnesのコレクションに属するすべてのModelThreesを取得したいと思います

すべてのModelOnesをループする必要はありません

私が見つけたのは、has_many:through単一のレコードから検索したすべての回答

答えて

0

にmodel_twos:経由model_ones、私はこれを使用して作業していますmodel_three.joins(model_two: :model_one).where(model_ones: {<the condition>})

0

私はここに私のものにつまずくかもしれないが、何かのように:

ModelThree.joins(model_two: :model_ones).where(model_two: { model_ones: { YOUR-WHERE-CLAUSE } }) 

ゴナすぐ何かを試してみると、私は更新かもしれません!

更新 あなたはこれを試みることができるmodel_two

+0

コンソールが私に言っています:列model_twos.model_threesは存在しません – Jarfis

+0

ああ、私はmodel2とmodel3の間の関係も想定していました。 どのように見えるのですか? – davidwessman

+0

model2 has_many model3 – Jarfis

0

の変更複数形...

ModelThree.joins(:model_ones).where(model_ones: { <some condition> }) 

にhas_manyを追加するアップデート試してみてください:ModelThree

+0

私にModel_onesという名前のアソシエーションがModelThreeに見つかりませんでした – Jarfis

+0

アソシエーションがどのように設定されているかを示す質問にさらに詳細を追加できますか? – tpho

+0

他の2つのモデルを私の例に加えて、それらの関係を示しました。役に立つと思われる情報はありますか? – Jarfis

関連する問題