2013-04-13 3 views
1

Я пытаюсь фильтровать записи, назначенные на определенный день (сегодня), используя этот запрос:Rails фильтр на сегодняшний день не возвращая никаких результатов

assignments = p.assignments.where("assigned_date = ?", Date.today) 

Даже если я знаю, что существуют эти записи, я всегда получаю пустой результат назад. Я также пробовал ... где (: assign_date => Date.today) без везения.

Схема базы данных:

# == Schema Information 
# 
# Table name: assignments 
# 
# id     :integer   not null, primary key 
# name     :string(255) 
# rep     :integer 
# set     :integer 
# instructions   :text 
# created_at   :datetime  not null 
# updated_at   :datetime  not null 
# player_id   :integer 
# actual_percentage :float 
# predicted_percentage :float 
# assigned_date  :date 
# 

И в консоли, когда я печатаю

p.assignments.first.assigned_date == Date.today 

он возвращает истину. Любая идея, что я делаю неправильно?

ответ

1

DateTime содержит дату и время, поэтому вы ищете записи, которые имеют точное значение, а не только в тот же день.

assignments = p.assignments.where('assigned_date BETWEEN ? AND ?', DateTime.now.beginning_of_day, DateTime.now.end_of_day).all 

должна вернуть то, что ожидается

P.S.
все кредиты Tadman

+0

@ user1742188, не так ли? – ted

+1

Ну, решение здесь само по себе не сработало. Но я использовал ''assign_date BETWEEN? AND? ', @date, @date + 1.day'', и это сработало. Полагаю, это потому, что это объект Date, а не datetime. – user1742188

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