Если я правильно понимаю у вас с фронтенда приходит массив значений из таблицы values.
Вариант 1: через
Has Many Through не получить products которые с ними связаны, а потом не пересечь коллекции?
Вариант 2: сделать Scope который по массиву values получает все товары у которых такие значения.
Возможно я не правильно понимаю и у нас с фронтенда приходит верхнее и нижнее значения для каждого из params - тогда только вариант 2.