Rails:查找某一天创建的任务?
我有一个任务列表(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”)动态转换为当天的开始(和结束),以便我可以进行比较。
def todays_tasks(now = Time.now) Task.find(:all, :conditions => ["starts_at > ? AND < ?", now.at_beginning_of_day, now.at_end_of_day]) end
瞧!
扩展奥古斯特的答案一点点。 在您的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创建任务,它将保持在正确的日期。
不是吗?
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是任务结束时的最后一个值。
def todays_tasks(day) Task.where(:created_at => day.beginning_of_day .. day.end_of_day) end