Преобразование запроса в активную запись
Чтобы выполнить запрос диапазона, мы следуем чему-то вроде синтаксиса ниже:
oms[:order_items].where(:internal_sla => 3..5) results in this query
=> #<Sequel::Mysql2::Dataset: "SELECT * FROM `order_items` WHERE ((`internal_sla` >= 3) AND (`internal_sla` <= 5))">
Но как я могу изменить активный запрос записи, чтобы дать мне что-то вроде этого = > select internal_sla from order_items where (internal_sla<=3 and internal_sla>=0) OR (internal_sla<=15 and internal_sla>=10)
Ответы
Ответ 1
.where("(internal_sla >= ? AND internal_sla <= ? OR
internal_sla >= ? AND internal_sla <= ? )", 0, 3, 10, 15).pluck(:internal_sla)
ОБНОВЛЕНИЕ после комментария:
Если internal_sla является целым числом, вы можете:
.where(:internal_sla => (0..3).to_a + (10..15).to_a).pluck(:internal_sla)
изменить: фиксированная опечатка
Ответ 2
Это работает
oms[:order_items].where(:internal_sla => [0..3, 10..15])