[英]Ruby on Rails iterate array result into query
以下是查询的输出:
unless @slug == 'all'
@city = '' if @city.blank?
@city = @city.gsub("-", " ")
country = Country.where("lower(name) LIKE ?", "#{@city.downcase}")
gon.country = country
if country.present?
end
if @city.present?
@products = @products.where("lower(city) LIKE ? or lower(country) like ? or lower(state) LIKE ?", "%#{@city.downcase}%", "%#{@city.downcase}%","%#{@city.downcase}%")
@city_obj = City.where("lower(name) LIKE ?", "%#{@city.downcase}%").first
end
end
此处gon.country
返回结果为:
Object
countries
:
Array[2]
0
:
"california"
1
:
"san francisco"
我如何遍历各个countries
并将其传递以获得@products
结果?
您可以通过两种方式进行操作:
遍历所有国家/地区记录,然后添加类似的查询。
@product = [] country.each do |con| @products << @products.where("lower(city) LIKE ? or lower(country) like ? or lower(state) LIKE ?", "%#{con.downcase}%", "%#{con.downcase}%","%#{con.downcase}%") end
您可以使用核心sql的ILIKE语法。 像这样的工作:
select * from table where value ilike any (array['%foo%', '%bar%', '%baz%']); # in your case country_array_with_percent = country.map {|con| "%#{con}%" } @products.where("name ILIKE ANY ( array[?] )", country_array_with_percent)
您还可以使用或查询进行查询链接,更多详情请点击此处
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.