2

Я хочу получить три типа билетов из той же таблицы. Билет. Например,рельсы способ получить записи из одной таблицы с разными типами

Ticket.where(type: 'a').limit(5) 
Ticket.where(type: 'b').limit(5) 
Ticket.where(type: 'c').limit(5) 

Каков наилучший способ для рельсов получить данные, эквивалентные трем трем запросам с минимальными ударами БД.

+0

Я хочу 15 записей, включая 5 записей каждого типа «a», «b» и «c». –

ответ

1

Я думаю, вам нужно использовать SQL UNION запрос. Вы можете видеть это ответы: ActiveRecord Query Union

Или сделал все, что использует только сумму рельсов. Это не изящное решение, но вы можете попробовать следующее:

scope :by_type, ->(type){ where(type: type).limit(5) } 

def self.foo 
    Ticket.by_type('a') + Ticket.by_type('b') + Ticket.by_type('c') 
end 
2

Вы можете использовать IN

types = [a,b,c] 

Ticket.where("type IN (?)", types).limit(5) 
+0

Это даст нам 5 записей, но нам нужно 5 записей каждого типа. SO в общей сложности 15. –

+0

@AdnanAli Интересно. Полностью пропустил этот момент. Будем следить за этим. – Pavan

Смежные вопросы