私はモデルカテゴリを持っています。これはhas_many Products、製品はhas_many Categoriesです。ユーザーがカテゴリを検索すると、Arelオブジェクトを失うことなく、一致するカテゴリの商品を返したいと思います。ここで私がこれまで持っているものです。Railsの "where"クエリで関連オブジェクトだけを選択するにはどうすればいいですか?
Category.where("upper(title) like ?", search_term.upcase).map {|category| category.products}.flatten
これは、製品を返すのトリックを行いますが、もちろん私が持っているものではないアレイとARELです。私は:includes(:products)
句を追加するまで得ることができるので、私は本当に戻って製品を得るが、私はまだそれらのカテゴリに添付している。私が返すのは、製品にのみアドレスするArelであるようにクエリを調整するにはどうすればよいですか?
[「クラスメソッドを使用すると、スコープの引数を受け入れるための好ましい方法です」] (http://guides.rubyonrails.org/active_record_querying.html#passing-in-arguments)でも、それは主にニトピッキングです。 –
ありがとう、それは良い点です。 – DanneManne
ちょうど記録のために: 'def self.in_categories_like(search_term); joins(:categories).where( "upper(categories.title)like?"、search_term.upcase);終わり。 –