2012-05-12 9 views
10

I modelli sono Enquiry e Consellor. Voglio assegnare richieste ai consulenti in modo round robin. Se ci sono 3 consellors e 5 richieste, quindi l'assegnazione dovrebbe essere:Assegnazione round-robin in Ruby

Richiesta 1 => C1, Richiesta 2 => C2, Richiesta 3 => C3, Richiesta 4 => C1, Richiesta 5 => C2

Posso farlo interrogando DB e ottimizzando il caching, ma cercando una soluzione migliore.

risposta

14

Array # ciclo (un enumeratore infinito) è bello per questo:

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}."} 

uscita

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. 
+0

Avresti bisogno di serializzare consiglieri della banca dati per la persistenza e riassegnare ogni volta un consulente viene creato o distrutto – DanS