現在の日付と既に使用されている日付に基づいて利用可能な週を計算する方法が必要です。
私はさまざまな解決策を考え出しましたが、それらはすべて Ruby にとって「醜い」方法のようです。私はそれを行うより良い方法があることを知っています。
要件:
メソッドは 3 つの引数を取ります
start - Date, to start calculation from
amount - Integer, How many weeks do we want?
used_weeks - Array of already used weeknumbers (optional) Default: nil
メソッドにこれを渡すとしましょう:
calculate_available_weeks (Date.current, 5, [1,3,7])
(簡単にするために、Date.current が 2012 年 1 月 1 日 Sun を返すとしましょう)
次に、メソッドは次の週の日付を返す必要があります: 2,4,5,6,8
ここに私がこれまでに持っているものがあります:
def calculate_week_dates(start, amount, excluded_weeks = nil)
weeks = []
last_checked = start
until weeks.length == amount do
unless excluded_weeks && excluded_weeks.include?(last_checked.cweek)
weeks << last_checked
end
last_checked = last_checked.next_week
end
weeks
end