私はモデルを持っEnquiry
ていConsellor
ます。お問い合わせをラウンド ロビン方式でカウンセラーに割り当てたいと考えています。3 つのコンセラーと 5 つの問い合わせがある場合、割り当ては次のようになります。
照会1 => C1、照会2 => C2、照会3 => C3、照会4 => C1、照会5 => C2
DBにクエリを実行し、キャッシュによって最適化することでこれを行うことができますが、より良い解決策を探しています。
私はモデルを持っEnquiry
ていConsellor
ます。お問い合わせをラウンド ロビン方式でカウンセラーに割り当てたいと考えています。3 つのコンセラーと 5 つの問い合わせがある場合、割り当ては次のようになります。
照会1 => C1、照会2 => C2、照会3 => C3、照会4 => C1、照会5 => C2
DBにクエリを実行し、キャッシュによって最適化することでこれを行うことができますが、より良い解決策を探しています。
これには Array#cycle (無限列挙子) が適しています。
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.