2009-04-12 8 views
5

私はタスクのリスト(name、starts_at)を持っており、それらをiCalのように毎日のビューで表示しようとしています。Rails:特定の日に作成されたタスクを検索しますか?

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

私は比較を行うことができますので、私は動的に一日の始まり(及び終了)に、このような「2009年4月12日午前10時00分00秒」としてTime.nowを変換する方法を見つけ出すことはできません。

答えて

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 

Voila!

+0

こんにちは@august、私はat_end_of_dayが壊れているのを見るので、私はちょうどend_of_day –

3

augustlの回答を少し拡大してください。 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秒にタスクを作成した場合、正しい日に残ります。

0

は、それはではないでしょう:

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

さもないと、あなたが仕事の日に午前0時00分00秒をチェックすることはないと11時59分59秒での最後の最後の値であります仕事の日。

0
def todays_tasks(day) 
    Task.where(:created_at => day.beginning_of_day .. day.end_of_day) 
end 
関連する問題