我有一个任务列表(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”)动态转换为当天的开始(和结束),以便我可以进行比较。
答案 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