Сравнение даты с нулем не удалось - ruby - PullRequest
5 голосов
/ 03 апреля 2012

Я использую код, подобный этому:

if valid_from > Date.today

и когда я запускаю это, я получаю сообщение об ошибке

Сравнение даты с нулем не удалось

Я предполагаю, что это происходит, потому что в некоторых случаях valid_from - это nil. Есть ли способ избежать этой ошибки?

Ответы [ 3 ]

7 голосов
/ 03 апреля 2012

Вы можете сделать:

if valid_from and valid_from > Date.today
  ...
end

Что приведет к короткому замыканию в первом предложении, потому что valid_from равно nil и, следовательно, false.

4 голосов
/ 26 марта 2015

Другим вариантом будет преобразование обоих в целое число

if valid_from.to_i > Date.today.to_i

(ноль преобразуется в 0 и никогда не больше текущей даты)

Преимущество в том, что он короче и не требует лечения для дополнительного случая. Недостаток: сбои в начале эпохи (могут пренебречь для многих сценариев)

2 голосов
/ 26 марта 2015

Мне нравится делать их так: valid_from && valid_from > Date.today

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...