посмотрите, прошло ли с created_at 24 часа в Rails

#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.