0

我希望能够通过饮品名称或饮品成分来搜索我的饮品。

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

我的上述解决方案有效,但我正在寻找改进。这似乎有点骇人听闻。

我的问题:有没有办法将这两个查询组合成一行?这是正确的做法吗?

4

2 回答 2

3

你想要的既可能而且相当简单,但它确实需要编写一些实际的 SQL - 你不能依赖基于哈希的条件。假设您有一个包含列的ingredientsname

@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 回答