2010-04-26 67 views
12

我試圖找出從軌道查詢日期範圍的最佳方式...我在谷歌環顧四周,但我不確定如何使用此句法。Rails - 試圖從日期範圍查詢...今天的一切從

我有一個模型,有各種事件,我想添加到我的查找條件一個警告,應該只顯示事件的字段:st_date是今天或晚些時候,實際上只顯示我的數據是當前的,沒有什麼今天發生之前。

我遇到了一個問題,因爲我沒有結束日期來停止查詢,我想查詢從今天到下個月的所有內容。

我想這樣

@events = Event.find(:all, :conditions => ["start_date between ? and ?", 
     date.Today, date.next_month.beginning_of_month]) 

,但我得到的錯誤未定義的局部變量或方法'日期」 ......

我需要做什麼特別事情要使用Date類?或者我的查詢語法有問題嗎?我真的很感激任何幫助。

回答

15

你想要Date.today,而不是date.today。有沒有錯,你在做什麼,你只是沒有引用日期類正確

而且這將是Date.today.next_month.beginning_of_month

+0

非常感謝,其最小的事往往.... – ChrisWesAllen 2010-04-26 21:34:31

6

Event.where(:start_date => Date.today..Date.today.next_month.beginning_of_month)也偉大工程。

1

看看我的by_star插件,它可以讓你做這樣的事情:

Event.by_month(Time.now, :field => "start_date") 
14

我會採取這一步,定義你的模型重用範圍。

# rails 3 example: 
# app/models/event.rb 
scope :upcoming, lambda { 
    where("start_date between ? and ?", Date.today, Date.today.next_month.beginning_of_month) 
} 

# app/controllers/some_controller.rb 
@events = Event.upcoming 

也有範圍上有很大Railscasts插曲的Rails 3:
http://railscasts.com/episodes/202-active-record-queries-in-rails-3

+4

應該不是你的範圍包括拉姆達{}符號以便在使用時評估該日期,而不是在加載類時進行評估。 – craig 2010-07-15 02:36:34

+0

你是對的 - 謝謝craig! – mrwade 2011-11-16 23:27:47