postgresql rails价格范围过滤器之间

时间:2013-11-23 18:57:22

标签: mysql ruby-on-rails ruby rails-postgresql pg

我有以下价格范围数组如何执行查询以查找这些使用和运算符之间的价格范围

这是我拥有的数组

["0-1000", "5001_15000", "15001_25000"]

这是否是我必须执行其他操作的唯一方法是执行此类过滤器的任何方法

select * from posts where price between 0 and 1000 and price between 5001 and 15000

修改-1

正如你所说,我在我的控制台中试过

a = [[0,1000],[5001 ,15000], [15001, 25000]]

(a[0].first..a[0].last)

这会给0..1000,当我尝试

(a[0].first..a[0].last and a[1].first..a[1].last)

它只显示5001..15000你能解释一下吗。

修改-2

只有这样才有效我如何添加更多值

Post.where(price: a[0].first..a[0].last)

2 个答案:

答案 0 :(得分:0)

我开始调整你的价格范围数组。 从:

["0-1000", "5001_15000", "15001_25000"]

a = [[0,1000],[5001 ,15000], [15001, 25000]]

这样您就可以使用

访问第一个和最后一个价格范围界限
(a[0].first..a[0].last))

上面是一个产品0..1000的范围,您可以插入活动记录,(当然使用哈希语法)

示例:

Post.where(price: a[0].first..a[0].last)

使其成为可重复使用的范围,以便能够将它们链接到Ands或者只是编写原始sql。

希望这有帮助

答案 1 :(得分:0)

对于动态数组长度,请尝试此

arr = [["0", "100"], ["100", "200"]]
query_string = ""
arr.each {|a| query_string << (arr.last == a ? " price between #{a.first} and #{a.last}"    : "price between #{a.first} and #{a.last} or") }
Product.where(query_string)

找到预期的记录