Rails:查找某一天创建的任务?

时间:2009-04-12 19:31:40

标签: ruby-on-rails ruby

我有一个任务列表(name,starts_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 个答案:

答案 0 :(得分:11)

def todays_tasks(now = Time.now)
  Task.find(:all, :conditions => ["starts_at > ? AND < ?", now.at_beginning_of_day, now.at_end_of_day])
end

瞧!

答案 1 :(得分:3)

稍微扩展奥古斯特的回答。在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

这有助于保持控制器的瘦。我还比较了当天的结束和明天的开始。这可以确保如果用户在晚上11:59:59创建任务,它将保持在正确的日期。

答案 2 :(得分:0)

不是吗:

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是任务当天结束时的最后一个值。

答案 3 :(得分:0)

def todays_tasks(day)
   Task.where(:created_at => day.beginning_of_day .. day.end_of_day)
end