2010-05-18 5 views
0

Что я здесь отсутствует, это сводит меня с ума ..Почему Rails date compare не работает?

>> user.current_login_at.utc > 24.hours.ago.utc 
=> false 
>> 24.hours.ago.utc 
=> Mon May 17 18:46:16 UTC 2010 
>> user.current_login_at.utc 
=> Mon May 17 15:47:44 UTC 2010 

user.current_login_at был 27 часов назад, но тем больше, чем сравнение говорит, что это было не больше, чем 24 часа назад. Это оставляет меня почесывать мою голову.

ответ

5

«Больше, чем» для даты означает «после». 24.hours.ago дает время, а не время. Понятно, что вы спрашиваете: «Зашел ли пользователь после того, как было 24 часа назад?», А не «зарегистрировался ли пользователь более 24 часов назад?». Таким образом, вы хотите:

user.current_login_at.utc < 24.hours.ago.utc 

Что говорит «сделал ли вход в систему до 24 часов назад?»

+1

Jinx! Великие мысли думают одинаково. –

+0

Ух .. мой мозг болит. Кажется, это так очевидно. : D – revgum

1

Вы используете «больше чем», что в даты сравнения, означает «позже»

Является ли текущий Войти позднее, чем за 24 часа назад?

user.current_login_at.utc > 24.hours.ago.utc 

Текущее объявление раньше, чем 24 часа назад?

user.current_login_at.utc < 24.hours.ago.utc