作用域参数在Rails 5中作为数组

时间:2018-08-08 22:21:19

标签: ruby-on-rails arrays ruby scope ruby-on-rails-5

我有一个带有参数city的范围,该范围接收参数,加入一个表调用Restaurant(因为我在那里有参数),然后用IN为多个OR构成where条件。

scope :by_cities, -> (city) { joins(:restaurant).where('restaurants.city IN (?)', city) }

问题是,我想学习示波器如何在示波器中接收一组参数,我已经尝试了很多东西,并且正在使用这个人的指南:Rails 4 scope with argumentActiveRecord 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

但是,任何人都知道这是怎么做的吗?

1 个答案:

答案 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])