Рубиновое сравнение дат - PullRequest
1 голос
/ 27 июня 2011

@student = Student.find(:all, :conditions => {:school_id => school.id,:created_at => Date.today })
Мне нужно написать этот рубиновый запрос, чтобы найти всех учеников в школе, дата создания которых должна быть в один день.
Но это дает нулевые значения. Когда я использую условие «если», я могу использовать if created_at.to_date == Date.today.to_date.
Поэтому мой вопрос заключается в том, как я могу преобразовать форматированный формат даты и времени (: creation_at) в формат даты. (означает, что здесь Student.find (..,: creation_at.to_date => Date.today.to_date) невозможно, какой альтернативный способ)

1 Ответ

5 голосов
/ 27 июня 2011

Часть хитрости в том, что created_at - это значение времени, а не значение даты. Один из способов решения этой проблемы, рекомендованный этим ответом StackOverflow на похожий вопрос , - преобразовать значение created_at в дату во время запроса:

school.students.all(:conditions => ["DATE(created_at) = DATE(?)", Time.now])

(Обратите внимание, что я реорганизовал запрос, чтобы использовать школьные отношения has_many :students.)

...