在ActiveRecord查询中使用多个LIKE语句

时间:2016-01-10 15:05:09

标签: ruby-on-rails rails-activerecord sql-like

我对Rails相当新。我已经建立了一个搜索栏,可以浏览我的所有产品。当我只搜索产品名称或描述时,我得到了它的工作。但是,如果名称与搜索字词匹配或与描述匹配,我希望将搜索字词与两者以及要显示的产品进行比较。

这是我目前的代码:

if params[:q]
  search = params[:q]
  @products = Product.where("name LIKE ? OR description LIKE ?", "%#{search}%")
else 
  @products = Product.all 
  end

现在我收到一个错误:“错误的绑定变量数”

我一直试图谷歌寻求解决方案,但我没有幸运。如果有人可以帮助我,我会很感激!非常感谢。

2 个答案:

答案 0 :(得分:13)

如果查询中的变量具有相同的值,则可以使用命名键:

Authorize

如果他们不同:

@products = Product.where(
  "name LIKE :search OR description LIKE :search", search: "%#{search}%"
)

或只是使用问号:

@products = Product.where(
  "name LIKE :first_search OR description LIKE :second_search",
  first_search: "%#{f_search}%", second_search: "%#{s_search}%"
)

答案 1 :(得分:1)

您需要提供两次搜索键。每个?

一个
search_key = "%#{search}%"
@products = Product.where("name LIKE ? OR description LIKE ?", search_key, search_key)