Назначение Round-robin в Ruby

У меня есть модели Enquiry и Consellor. Я хочу передать запросы советникам круглым способом. Если есть 3 собеседника и 5 запросов, то назначение должно быть:

Запрос 1 = > C1, запрос 2 = > C2, запрос 3 = > C3, запрос 4 = > C1, Запрос 5 = > C2

Я могу сделать это, запросив DB и оптимизируя кеширование, но ища лучшее решение.

Ответ 1

Цикл массива # (бесконечный перечислитель) хорош для этого:

counselors = %w(C1 C2 C3).cycle
enquiries = Array.new(5){|i| "Enquiry #{(i+1).to_s}"}
enquiries.each{|enq| puts "Do something with #{enq} and #{counselors.next}."}

Выход

Do something with Enquiry 1 and C1.
Do something with Enquiry 2 and C2.
Do something with Enquiry 3 and C3.
Do something with Enquiry 4 and C1.
Do something with Enquiry 5 and C2.