Получение следующей даты в рельсах - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть события, и мне нужно получить следующие DateTime (после Time.now), что, кроме грубой силы, проверяющей IE, когда запись переходит со .past? на .future?, есть, чтобы получить следующеедата после Time.now

Пример

Время: теперь 10 октября 2019

|---------------------|------------------|
|         id          |     Date         |
|---------------------|------------------|
|          1          |      01/10/19    |
|---------------------|------------------|
|          2          |      05/10/19    |
|---------------------|------------------|
|          3          |      11/10/19    | <-- This being the desired record
|---------------------|------------------|
|          4          |      14/10/19    |
|---------------------|------------------|
|          5          |      17/10/19    |
|---------------------|------------------|

На мой взгляд, такой метод, как Model.where(past:false).first

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019
User.where('created_at > ?', Time.zone.now).order(created_at: :asc)

Вы можете использовать >, если не хотите включать какие-либо записи, которые соответствуют точной секунде, на которой вы находитесь. Вы можете использовать >=, чтобы включить его.

, если вам нужна только одна запись, вы можете добавить LIMIT 1

User.where('created_at > ?', Time.zone.now).order(created_at: :asc).limit(1)
0 голосов
/ 04 ноября 2019

ActiveSupport::Duration#from_now делает это:

1.day.from_now
# => Tue, 05 Nov 2019 15:04:06 EST -05:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...