2012-05-12 33 views
10

Tôi có các mẫu EnquiryConsellor. Tôi muốn chỉ định các yêu cầu cho nhân viên tư vấn theo cách thức vòng tròn. Nếu có 3 consellors và 5 thắc mắc, sau đó phân công nên là:Phân công vòng tròn trong Ruby

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

Tôi có thể làm điều này bằng cách truy vấn DB và tối ưu hóa theo bộ nhớ đệm, nhưng tìm kiếm giải pháp tốt hơn.

Trả lời

14

Mảng # chu kỳ (một Enumerator vô hạn) là tốt đẹp cho việc này:

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

Output

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

Bạn sẽ cần phải serialize tư vấn trong cơ sở dữ liệu cho kiên trì và phân công lại nó mỗi khi một cố vấn được tạo hoặc hủy – DanS

Các vấn đề liên quan