Я хочу попытаться получить дату из параметров в формате даты, и если это не так, я хотел бы назначить ее дате с сегодняшнего года.
Это то, что я пробовал.
valid_until = params[:valid_until].try(:to_date) || Date.today.next_year
Метод try
крут, потому что если дата :valid_until
равна нулю, он просто вернет nil. Однако я обнаружил, что если у кого-то есть недопустимая дата, например «4790224374», он вернет ArgumentError
как недопустимую дату. дата :valid_until
все равно будет сравниваться с to_date
.
Я предполагаю, что это со спасением кажется единственным ответом, просто интересно, есть ли более разумный способ попытаться обработать нули и недопустимые ошибки даты, прежде чем устанавливать его по умолчанию в следующем году.
ИЗМЕНИТЬ:
Вы можете прочитать о Попробуйте здесь.
Вы можете прочитать о to_date здесь
rescue
вместо||
и, возможно, убратьtry
? Это было бы довольно аккуратно, но я думаю, недостатком является то, что все исключения будут перехвачены. - person Sam Starling   schedule 30.09.2014