2010-06-03 4 views
2

Я пытаюсь использовать условие для событий, когда start_at DateTime равно или больше, чем сегодняшняя дата. Я хочу перечислить предстоящие события, но ясно, что они не наступают, если они уже прошли.Сравните DateTime с текущей датой

у меня есть:

@appointments = Event.find(:all, :conditions => ['move_id = ? AND start_at = ?', @move.id, Date.today]) 

Я думаю, что можно сравнивать яблоки и апельсины здесь. Он не бросает и не ошибается, просто не делает того, что он должен.

Помощь! Заранее спасибо.

+0

Если он не делает то, что должен, что он делает? – theIV

+0

Извините, плохое объяснение. Он втягивает события в соответствии с ассоциацией, чтобы переместить ее, но, похоже, не подтверждает условие на start_at. Он извлекает информацию о дате, но не сравнивается? – looloobs

ответ

3

Try:

@appointments = Event.find(:all, :conditions => ['move_id = ? AND start_at >= ?', @move.id, DateTime.now]) 

Weird, что я не могу найти DateTime # теперь документации.

Я использую Postgres для этого теста.

>> Event.last.created_at.class 
=> Time 
>> Event.find(:first, :conditions => ['created_at >= ?', DateTime.now]).valid? 
=> true 

поле код миграции

t.datetime "created_at", :null => false 
+0

Спасибо, я действительно попробовал это тоже, и пока он натягивает DateTime, сейчас он, похоже, не выполняет сравнение двух? – looloobs

+0

Что это за тип столбца start_at? – retro

+0

столбец start_at - DateTime – looloobs

0

, как вы сказали, start_at равно или больше текущей даты, возможно, это была проблема с оператором, который проверял start_at Вашего мероприятия с сегодняшнего дня

Evento.find(:all, :conditions => ['start_at >= ?', DateTime.now]) 

Если вы используете mysql, вы можете использовать «start_at> = CURRENT_DATETIME» или что-то в этом роде

Смежные вопросы