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
name
或 description
喜欢 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]
希望对您有所帮助!
我有一个名为 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
name
或 description
喜欢 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]
希望对您有所帮助!