我有一个带有参数city的范围,该范围接收参数,加入一个表调用Restaurant(因为我在那里有参数),然后用IN为多个OR构成where条件。
scope :by_cities, -> (city) { joins(:restaurant).where('restaurants.city IN (?)', city) }
问题是,我想学习示波器如何在示波器中接收一组参数,我已经尝试了很多东西,并且正在使用这个人的指南:Rails 4 scope with argument :ActiveRecord where field = ? array of possible values
日志
Parameters: {"city"=>"SanPedro"}
SELECT "vacancies".* FROM "vacancies" INNER JOIN "restaurants" ON
"restaurants"."id" = "vacancies"."restaurant_id" WHERE (restaurants.city
IN ('SanPedro'))
路线
http://localhost:3000/v1/vacancies?city=SanPedro&Monterrey
但是,任何人都知道这是怎么做的吗?
答案 0 :(得分:2)
至少,这里的网址查询方式存在问题:
http://localhost:3000/v1/vacancies?city=SanPedro&Monterrey
您可以在参数中看到:
Parameters: {"city"=>"SanPedro"}
您的城市不多。尝试更多类似的东西:
http://localhost:3000/v1/vacancies?city%5B%5D=San+Pedro&city%5B%5D=Monterrey
哪个应该给您类似的东西:
Parameters: {"city"=>['San Pedro', 'Monterrey']}
顺便说一句,您可以通过执行以下操作查看正确的查询字符串:
{city: ['San Pedro', 'Monterrey']}.to_query
在您的控制台中。
然后,您应该可以执行以下操作:
Vacancy.by_city(params[:city])