Rails: найти задачи, которые были созданы в определенный день? - PullRequest
5 голосов
/ 12 апреля 2009

У меня есть список задач (name, start_at), и я пытаюсь отображать их в ежедневном представлении (как в iCal).

def todays_tasks(day)
    Task.find(:all, :conditions => ["starts_at between ? and ?", day.beginning, day.ending]
end

Я не могу понять, как динамически преобразовать Time.now, например "2009-04-12 10:00:00", в начало (и конец) дня, чтобы я мог провести сравнение.

Ответы [ 4 ]

11 голосов
/ 13 апреля 2009
def todays_tasks(now = Time.now)
  Task.find(:all, :conditions => ["starts_at > ? AND < ?", now.at_beginning_of_day, now.at_end_of_day])
end

Voila!

3 голосов
/ 13 апреля 2009

Немного расширяю ответ Августа. В вашей модели Task вы можете определить метод для извлечения этих задач для вас.

  def self.todays_tasks(t = Time.now)
    Task.all(:conditions => ["created_at > ? AND created_at < ?", t.at_beginning_of_day, t.tomorrow.at_beginning_of_day])
  end

Это помогает сделать ваш контроллер худым. Я также сравниваю конец дня с началом завтра. Это гарантирует, что если пользователь создает задание в 23:59:59, оно остается в правильном дне.

0 голосов
/ 09 декабря 2014
def todays_tasks(day)
   Task.where(:created_at => day.beginning_of_day .. day.end_of_day)
end
0 голосов
/ 13 апреля 2009

Не будет ли:

Task.all(:conditions => ["created_at >= ? AND created_at < ?", Time.now.at_beginning_of_day, Time.now.tomorrow.at_beginning_of_day] )

Иначе вы бы никогда не проверили 00:00:00 в день задач, а 11:59:59 - это последнее значение в конце дня задач.

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