我正在尝试创建2列的多个范围。我知道可以实现多个范围,但我需要它可以处理2列。
在我的模型中,我有一个min_age
和max_age
。用户可以选择多个年龄进行过滤,例如:选项为 10,11,12,13,14,15,16,17,18 ,用户选择11、13和16。如何从所选选项中过滤模型?
此外,我想我需要将选定的选项更改为一个范围,以使上面的内容变为10-11、12-13和15-16,以便可以使用gt
和{ {1}}参数。但是,也许范围过滤器对此不起作用?
在SQL中,我可以执行以下操作,该操作返回我希望看到的内容,因此我只需要通过Searchkick将其转换为elasticsearch语法。
lt
答案 0 :(得分:1)
在不研究范围是否是应用程序逻辑的最佳选择的情况下,要获得与SQL等效的效果,可以使用以下内容:
Event.search(
"*",
where: {
_or: [
{min_age: {lte: 11}, max_age: {gte: 11)},
{min_age: {lte: 13}, max_age: {gte: 13)},
{min_age: {lte: 16}, max_age: {gte: 16)}
]
}
)