Rails .where查询不起作用

时间:2016-01-12 14:16:51

标签: mysql ruby-on-rails rails-activerecord grape-api

我有一个名为Toys的表,其中包含列MAX_HEAP_SIZE="8G"

我正在尝试对表进行查询,如下所示: toy_id, company_id, store_id, name and description

这个想法是,如果用户转到以下网址:toys = @company.toys.where("store_id = ? AND (name LIKE ? OR description LIKE ?)", params[:store_id], params[:query], params[:query],它将返回由https://myapp.com/api/toys/search?store_id=8&query="robot"表示的具有store_id或{{1}的商店的所有玩具} LIKE name。每次返回空JSON。不确定为什么?任何帮助或指导将不胜感激。

3 个答案:

答案 0 :(得分:1)

使用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)

答案 1 :(得分:1)

由于您有一张名为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]

我希望它能帮到你!

答案 2 :(得分:0)

请参阅@PardeepDhingra原始问题中的第一条评论

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