Rails .where 查询不工作

Rails .where query not working

我有一个名为 Toys 的 table,其中包含列 toy_id, company_id, store_id, name and description

我正在尝试对 table 进行查询,如下所示: toys = @company.toys.where("store_id = ? AND (name LIKE ? OR description LIKE ?)", params[:store_id], params[:query], params[:query]

这个想法是,如果用户转到以下 url:https://myapp.com/api/toys/search?store_id=8&query="robot" 它将 return 商店的所有玩具 store_id namedescription 喜欢 robot。每次它 return 都是空的 JSON。不确定为什么?任何帮助或指导将不胜感激。

使用 Arel 样式:

companies = Company.arel_table

toys = @company.where(store_id: params[:store_id]).where(companies[:name].matches(params[:query]).or(companies[:description].matches(params[:query])))

甚至:

companies = Company.arel_table

search_query = companies[:name].matches(params[:query]).or(companies[:description].matches(params[:query]))

toys = @company.where(store_id: params[:store_id]).where(search_query)

参考@PardeepDhingra在原问题中的第一条评论

toys = @company.toys.where("store_id = ? AND (name LIKE ? OR description LIKE ?)", params[:store_id], "%#{params[:query]}%", "%#{params[:query]}%"

作为你 'have a table called Toys',你可以尝试这样的事情:

@toys = Toy.where("company_id = ? AND store_id = ? AND (name LIKE ? OR description LIKE ?)", params[:company_id], params[:store_id], params[:query], params[:query]

希望对您有所帮助!