2017-02-14 4 views
2

が言うことができますどこに含まれます1つのクエリをレールに入れますか?私はそれがwhereパラメータで動作させることはできませんネストされたが、我々は3つのテーブルを持っているRailsの上

Product.includes(product_type: [product_type_options]) 
     .where("product_type_options.size = 'XL'") 

:よう

何か。何か案が?

+0

どのようなエラーが表示されますか?私はクエリから考えている配列を削除する必要があります –

答えて

3

これは、あなたが使用することができます

Product.includes(product_type: :product_type_options) 
    .where(product_types: { product_type_options: { size: 'XL' } }) 
+0

私は取得しています: 'エラー:列product_types.product_type_optionsは存在しません'。 – knagode

+1

もちろん、私は答えを更新しました。 – Iceman

+0

'.where(product_type_options:{size: 'XL'})'は動作しますが、XLサイズを持たない製品は返さないことに気付きました(製品を見せて、XLサイズが利用できないことをユーザーに伝えたい) – knagode

-1

Product.joins(product_type: :product_type_options).where("product_type_options.size = 'XL'") 
-1

に合流動作するはずです、これは小さな構文の変更で、これを試してみてください。私はそれをテストしていない。それが動作するかどうか、私に教えてください:)

Product.includes(product_type: [product_type_options]) 
    .where("product_type_options.size" => 'XL') 
+0

答えは質問の例でした。それではうまくいきませんでした。あなたの答えを改善するか、それを削除することを検討してください。 – Myonara

+0

私の答えは改善されているか、問題の修正が求められました。私が行った変更を見てください。誰もがこのポストのような問題の自分のバージョンを解決するために変更から推測することができます。 –

1

@Icemanは近くにあった...それは、where句内の明示的なハッシュとして表現する必要があるため、それは「product_types」を見ていない理由は、その後、Rubyが行います適切な入れ子...

Product.includes(product_type: :product_type_options) 
    .where({ product_types: { product_type_options: { size: 'XL' } } }) 

奇妙な、しかし句は、ネストされた仕事を含むことができる場所に余分{}を加えます。

関連する問題