0

飲み物の名前または飲み物の成分で飲み物を検索できるようにしたいと考えています。

def index
  @drinks2 = Drink.where(:ingredients => {:name => params[:search]}).joins(:ingredients)
  @drinks = @drinks2 + Drink.where(:name => params[:search])
end

上記の解決策は機能しますが、改善を探しています。これはややハックのようです。

私の質問: これら 2 つのクエリを 1 行にまとめる方法はありますか? それは正しい方法ですか?

4

2 に答える 2

3

あなたが望むことは可能であり、かなり単純ですが、実際のSQLを書く必要があります.ハッシュベースの条件に頼ることはできません. 列を持つingredientsテーブルがあると仮定します。name

@drinks = Drink.joins(:ingredients).where('drinks.name = :search OR ingredients.name = :search', :search => params[:search])
于 2013-02-19T21:06:42.603 に答える
0

これは機能しませんか?

Drink.where(:ingredients => {:name => params[:search]}, :name => params[:search] ).joins(:ingredients)
于 2013-02-19T21:06:43.343 に答える