#ruby-on-rails #rails-console
#ruby-on-rails #rails-консоль
Вопрос:
Я пытаюсь проверить, прошло ли последнее сообщение в разговоре 24 часа, но я продолжаю получать false
message_tag= conversation.messages.incoming.last.created_at > 24.hours.ago
несмотря на то, что я изменил созданное время на 25.hours.ago message.created_at=25.hours.ago
что может быть причиной этого??
Комментарии:
1. Попробуйте использовать reload, чтобы проверить, что вы не получаете кэшированный ответ —
conversation.reload.messages.incoming.last.created_at > 24.hours.ago
2. @Jon это все еще False
3. Вы уверены, что проверяете правильное сообщение?
4. @Jon да, я уверен
5. Тогда дата должна быть неправильной? Я бы, вероятно, начал с написания модульного теста для описания ожидаемого поведения
Ответ №1:
Если вы ожидаете message_tag
true
, что сообщение будет старше 24 часов с этого момента и false
в противном случае, вам нужно изменить условие, т.Е. <
Вместо >
.
message_tag = conversation.messages.incoming.last.created_at < 24.hours.ago
Например :-
[3] pry(main)> Time.now < 24.hours.ago
=> false
[4] pry(main)> 25.hours.ago < 24.hours.ago
=> true
Ответ №2:
Вы можете проверить это как conversation.messages.incoming.last.created_at < 24.hours.ago
Комментарии:
1. у вас есть какие-либо идеи, почему это происходит?? это так сбивает с толку
2. Вы можете проверить, совпадают ли оба формата времени. Вы можете изменить оба времени на UTC.