Я хочу попытаться получить дату из params в формат даты, и если она не сможет, тогда я бы хотел присвоить ей дату с года сегодня.Ruby string date to_date с try дает недопустимую дату
Это то, что я пробовал.
valid_until = params[:valid_until].try(:to_date) || Date.today.next_year
Метод try
это круто, потому что если :valid_until
дата равна нулю она просто возвращает ноль. Тем не менее, я обнаружил, что если у кого-то неверная дата, например «4790224374», она вернет ArgumentError
как недопустимую дату. дата :valid_until
будет по-прежнему работать против to_date
.
Я думаю, что это спасение кажется единственным ответом, просто интересно, есть ли более разумный способ попытаться удовлетворить нильские и неверные ошибки даты, прежде чем устанавливать его по умолчанию в следующем году.
EDIT:
Вы можете прочитать о Try here.
Вы можете прочитать о to_date here
Вы можете поставить 'rescue' вместо' || 'и, возможно, сбросить' try'? Это было бы довольно аккуратно, но я думаю, что недостатком является то, что все исключения будут пойманы. –
Да, о чем я думал. его немного сложного. это может стать беспорядочным очень быстро, я потратил последнее мало времени, глядя на несколько идей, но все, кажется, добавляют несколько строк. – TheLegend
, когда вы не используете рубиновый ядро, не могли бы вы включить библиотеки, которые вы используете, чтобы помочь тем, кто хотел бы помочь :) –