Преобразование запроса в активную запись

Чтобы выполнить запрос диапазона, мы следуем чему-то вроде синтаксиса ниже:

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])