while
これを使用してランダムなマッチアップを選択し、その結果をテストして、ループの基準を満たすまでランダムなマッチアップを描画します。
m = Matchup.order("RANDOM()").first
ループはbreak
10 サイクル後に設定され (無限ループを避けるため)、任意にループから抜け出し、ログをチェックして、ループを通過するたびにマッチアップが同じであることを確認します。ループの単純化されたバージョンは次のようになります。
counter = 0
while counter < 5
m = Matchup.order("RANDOM()").first
logger.debug('Matchup ID: ' + m.id)
counter += 1
end
ログは次のようになります。
Matchup ID: 7
Matchup ID: 7
Matchup ID: 7
Matchup ID: 7
Matchup ID: 7
m = Matchup.order("RANDOM()").first
別のマッチアップを恣意的にプルしないのはなぜですか? 最も奇妙な部分は、問題なく動作することもあれば、b/cm
が変化しないループでスタックすることもあります。助言がありますか?
実際のループを見たい場合は、ここ (getRandomMatchup
関数内) で見ることができます:
https://github.com/jackerman09/wdis/blob/master/app/controllers/static_pages_controller.rb