Условный запрос ActiveRecord с датами не работает - PullRequest
0 голосов
/ 25 ноября 2010
irb(main):104:0> s = Status.all
=> [#<Status id: 1, card_id: 1, user_id: 1, next: "2001-01-01 00:00:00", level: 1,          created_at: nil, updated_at: nil>, #<Status id: 2, card_id: 2, user_id: 1, next: "2001-01-01 00:00:00", level: 1, created_at: nil, updated_at: nil>, #<Status id: 3, card_id: 3, user_id: 1, next: "2011-01-01 00:00:00", level: 1, created_at: nil, updated_at: nil>]
irb(main):105:0> s[2].next < Time.now
=> false
irb(main):106:0> s[1].next < Time.now
=> true
irb(main):107:0> Status.where("next < ?", Time.now)
=> [#<Status id: 1, card_id: 1, user_id: 1, next: "2001-01-01 00:00:00", level: 1, created_at: nil, updated_at: nil>, #<Status id: 2, card_id: 2, user_id: 1, next: "2001-01-01 00:00:00", level: 1, created_at: nil, updated_at: nil>, #<Status id: 3, card_id: 3, user_id: 1, next: "2011-01-01 00:00:00", level: 1, created_at: nil, updated_at: nil>]

Я ожидаю, что оператор Status.where вернет только 2 объекта.Кажется, что условие менее чем в предложении where не работает.Если я переключу его на значение больше чем, запрос вернет [].

, следующий будет задан как дата и время в миграции

Почему это условие, когда запрос не работает?Спасибо

Ответы [ 2 ]

0 голосов
/ 27 февраля 2018

Сначала вы должны попытаться форсировать форматирование БД в своем запросе: Time.now.to_s(:db)

Если это не сработает, использование часового пояса может быть хорошей идеей.

Time.zone.now.to_s(:db) 
0 голосов
/ 25 ноября 2010

Вы правы, что это должно работать, при условии, что сервер базы данных имеет правильное время.Какую базу данных вы запрашиваете?Пожалуйста, обновите ваш вопрос этим запросом, сгенерированным методом .where ().

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