У меня есть объект, который содержит список сроков, я пытаюсь создать систему, которая возвращает дату, когда указанная дата составляет 1 месяц или менее до даты оплаты.Должен возвращаться срок оплаты в этом формате «1 февраля 2009».Позвольте мне уточнить, используя мой текущий код
#Build array of estate objects
estate.due_dates = "1st Feb, 3rd May, 1st Aug, 5th Nov"
estate2.due_dates = "28th Feb, 31st May, 31st Aug, 30th Nov"
estates = [estate,estate2]
set_due_date_on_estates("1st Jan 2009",estates) #Run function - should return "1st Feb 2009,28th Feb 2009"
def set_due_date_on_estates(date,estates)
estates.each{|estate|
estate.due_dates.split(",").each{|due_date|
((date)..(date >> 1)).each{|current_date|
estate.set_reminder(due_date + current_date.strftime("%Y")) if current_date.strftime('%d %m') ==
Date.parse(due_date).strftime('%d %m')
}
}
end
}
Проблема, с которой я столкнулся, заключается в том, что в моем списке сроков не указан год, поэтому я перебираю свой диапазон и проверяю, совпадают ли датыформат "% d% m".Если это так, я устанавливаю напоминание в объекте состояния, используя текущую «дату исполнения» в цикле, соединенную с Годом «текущей даты» в цикле.
Я не слишком доволен кодом, в частности вложенными циклами, и удивляюсь, есть ли лучший способ, которым я мог бы заниматься проверкой, что due_dates где-то в диапазоне дат, даже если due_dates не имеют года.Спасибо